3种线程对比:
NSThread:
–优点:NSThread 比其他两个轻量级,使用简单
–缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销
GCD:
–Grand Central Dispatch是由苹果开发的一个多核编程的解决方案。iOS4.0+才能使用,是替代NSThread, NSOperation的高效和强大的技术
–GCD是基于C语言的
- NSOperation对象在创建或释放过程中会消耗明显的CUP资源
- 使用Block后代码比使用NSOperation,NSThread更简洁。
- dispatch_group , barrier.
- 条件锁类似于nsoperation中的依赖关系
- 信号量类似于nsoperationqueue中的最大并发量
NSOperation:
–不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上
–NSOperation是面向对象的
– 很容易设置两个NSOperation之间的依赖来让某一个操作在上一个操作完成后才执行。
– 方便设置在同一时间运行的操作个数
– 可以创建操作,支持在第一时间被取消
常见的锁:放在子线程内部,如果放在外面相当于实在主线程加锁
@synchronized(对象)对象锁
NSLock 互斥锁
NSConditionLock 条件锁
NSRecursiveLock 递归锁
网友评论