0

很简单,线程(或 NSThread)和 NSOperation 之间是否存在一对一的连接?或者它是否抽象出一个操作是一种可以在后台被多个线程拾取和运行的任务?

4

1 回答 1

4

不是一对一的连接,不。使用NSOperation子类的好处是您不需要自己管理多线程。Apple 甚至(令人困惑地)将典型的NSOperation子类(即重写-main方法)定义为non-concurrent,不是因为它不支持并发,而是因为并发的细节由超类管理:

不要被术语混淆:仅仅因为一个操作是非并发的,并不意味着它不能并发执行,它只是意味着你不必自己处理并发。

从这个意义上说,NSOperation子类更像是 NSThread 的目标对象 detachNewThreadSelector:toTarget:withObject:

如果您想控制并发的行为方式,另一种方法是-start在调用之前根据需要覆盖和设置并发-main

这是一个很好的概述:使用 NSOperation 管理并发

于 2011-05-12T14:45:43.380 回答