ios 怎么设置多线程的优先级

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios 怎么设置多线程的优先级相关的知识,希望对你有一定的参考价值。

1 Thread
2 Cocoa operations
3 Grand Central Dispatch (GCD)

Thread 轻量级 最复杂 你需要自己管理thread的生命周期,线程之间的同步。线程共享同一应用程序的部分内存空间,它们拥有对数据相同的访问权限。你得协调多个线程对同一数据的访问,一般做法是在访问之前加锁,这会导致一定的性能开销。在 ios 中我们可以使用多种形式的 thread:
Cocoa threads: 使用NSThread 或直接从 NSObject 的类方法 performSelectorInBackground:withObject: 来创建一个线程。如果你选择thread来实现多线程,那么 NSThread 就是官方推荐优先选用的方式。
POSIX threads: 基于 C 语言的一个多线程库,

Cocoa operations是基于 Obective-C实现的,类 NSOperation 以面向对象的方式封装了用户需要执行的操作,我们只要聚焦于我们需要做的事情,而不必太操心线程的管理,同步等事情,因为NSOperation已经为我们封装了这些事情。 NSOperation 是一个抽象基类,我们必须使用它的子类。iOS 提供了两种默认实现:NSInvocationOperation 和 NSBlockOperation。

Grand Central Dispatch (GCD): iOS4 才开始支持,它提供了一些新的特性,以及运行库来支持多核并行编程,它的关注点更高:如何在多个 cpu 上提升效率。
参考技术A ios 设置多线程的优先级的方法:
_thread = [[NSThread alloc] initWithTarget:self selector:@selector(runThread) object:nil];

-(void)runThread
@autoreleasepool
[[NSThread currentThread] setName:@"3DF7EF974A80"];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[_condition lock];
[_condition signal];
[_condition unlock];
[NSThread setThreadPriority:1.0];
CFRunLoopRun();

[runLoop removePort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[_condition lock];
[_condition signal];
[_condition unlock];

以上是关于ios 怎么设置多线程的优先级的主要内容,如果未能解决你的问题,请参考以下文章

场景应用:线程池的队列大小你通常怎么设置?

场景应用:线程池的队列大小你通常怎么设置?

如何设置迅雷的线程数呀?拜托各位了 3Q

IOS多线程之NSOperation

怎么设置有线无线网络优先级

iOS —— 多线程NSThread