NSThread
- 使用NSThread对象建立一个线程非常方便,但要使用NSThread管理多个线程较困难,不推荐使用;
- [NSThread currentThread]跟踪任务所在线程,适用于这三种技术。
|
|
NSObject
NSObject的多线程方法:
- 开启后台执行任务的方法:
|
|
- 在后台线程中通知主线程执行任务的方法:
|
|
NSObject的多线程方法注意事项:
- NSObject的多线程方法使用的是NSThread的多线程技术.
- NSThread的多线程技术不会自动使用@autoreleasepool.
在使用NSObject或NSThread的多线程技术时,如果涉及到对象分配,需要手动添加@autoreleasepool.
NSOperationQueue
- 支持线程池,可配置并发线程最大数量;
- 可设置线程间依赖关系,即在特定线程执行完毕后执行该线程;
|
|
线程同步
NSLock
|
|
@synchronized
同步代码块,将原子操作的代码放在synchronized中间。
|
|
NSCondition
条件锁,除支持lock和unlock外,还支持暂停或恢复线程。
|
|
NSRecursiveLock:
递归锁,针对递归
NSDistributedLock:
分布锁,它本身是一个互斥锁,基于文件方式实现锁机制,可以跨进程访问。
pthread_mutex_t:
同步锁,基于C语言的同步锁机制,使用方法与其他同步锁机制类似。