0
很简单,线程(或NSThread)和NSOperation之间是否存在一对一的连接?或者它被抽象出来的操作是一种可以被后台中的多线程拾起并运行的任务吗?NSOperation是否会产生一个新线程?
很简单,线程(或NSThread)和NSOperation之间是否存在一对一的连接?或者它被抽象出来的操作是一种可以被后台中的多线程拾起并运行的任务吗?NSOperation是否会产生一个新线程?
不是一对一的连接,没有。使用NSOperation
子类的优点是您不需要自己管理多线程。苹果甚至(容易混淆)典型NSOperation
子类(即一个重写-main
方法)定义为:非并发,不是因为它不支持并发性,但由于并发的细节是由超管理:
不要被术语混淆:仅仅因为一个操作是非并发的,并不意味着它不能同时执行,它只是意味着你不必自己处理并发。
在这个意义上说,一个NSOperation
子更像NSThread的 detachNewThreadSelector:toTarget:withObject:
的目标对象。
如果您想控制并发行为的方式,替代方法是在调用-main
之前覆盖-start
并根据需要设置并发。
这里有一个很好的概述:Managing Concurrency with NSOperation
所以该行本文件中说,没有一到一个连接?它说重写-main是不是并发的?非并发只是意味着它可以并行运行,不一定它可以运行或不运行在同一个nsthread上,是正确的吗? – Ying 2011-05-13 12:24:21
我已经从文档中引用并澄清了区别。 – 2011-05-13 15:28:55