这篇这是集大全
http://www.dreamingwish.com/dream-category/toturial/ios-mulit-thread-program-guide
(我靠,这个需要翻墙么?
还是网站挂了)
NSOperation, NSOperationQueue要点小记:
一,非并发的operation.
1.覆盖main方法,添加自己的事务逻辑。加入到queue中。系统即可自行启动线程执行。
2.在main中检测isCancelled,并添加autoreleasepool及exception的处理。
二,并发的operation
operation默认以同步方式执行。operation queue为operation提供了线程支持。operation的执行因此还是可以看做是异步的。
如果需要手动执行并发operation,需要其相对调用线程为异步,那么operation需要:
1.覆盖start,isExecuting,isFinished,isCouncurrent.
2.isConcurrent 返回为YES.
3.设置成员变量控制executing和finishing.
4.在相应的逻辑改变KVO的isExecuting,isFinishing key的值。
5.可以在start中做状态的初始化工作,在main中做具体任务的执行。(start中的写法与非并发中的mian一样)
6.手动执行operation需要调用isConcurrent.
三,简单快速的并发operation.
1.NSInvocationOperation
2.NSBlockOperation, 执行时,自身在独立线程中,将所有block提交到并发的dispatch queue,等待所有block完成后标记自己完成。
executing和finish时不可添加block。
四,operation的执行
1.一般情况添加到operation queue中的operation短时间内即被执行。
2.可添加一组operations:addOperations:waitUntilFinished: 。
或者直接添加block到queue:addOperationWithBlock:
-------------------------------------------------------------------------------