1

我是新手NSoperationNSoperation是一个单发对象。

  1. 我们如何通过 并发实现多个操作NSoperation

  2. 没有可能NSoperationQueue吗?

  3. 即使我们使用 NSoperationQueue,它也会执行 FIFO 格式的操作。它会如何并发执行呢?

4

1 回答 1

2

如果你想实现一个并发操作——也就是说,一个相对于调用线程异步运行的操作——你必须编写额外的代码来异步启动操作。例如,您可能会生成一个单独的线程、调用异步系统函数或执行其他任何操作来确保 start 方法启动任务并立即返回,并且很可能在任务完成之前返回。

大多数开发人员应该永远不需要实现并发操作对象。如果您总是将操作添加到操作队列中,则无需实现并发操作。当您向操作队列提交非并发操作时,队列本身会创建一个线程来运行您的操作。因此,将非并发操作添加到操作队列仍然会导致操作对象代码的异步执行。只有在需要异步执行操作而不将其添加到操作队列的情况下,才需要定义并发操作的能力。

请参阅并发编程指南 - 并发与非并发操作部分

另请阅读使用 NSOperation 管理并发

您通常通过将操作添加到操作队列(NSOperationQueue 类的实例)来执行操作。

NSOperationQueue类管理一组NSOperation对象的执行。被添加到队列后,操作将保留在该队列中,直到它被显式取消或完成其任务的执行。队列中的操作(但尚未执行)本身是根据优先级和互操作对象依赖关系组织的,并相应地执行。一个应用程序可以创建多个操作队列并向其中的任何一个提交操作。

操作队列直接执行其操作,通过在辅助线程上运行它们,或间接使用 libdispatch 库

You can read more about NSOperation here and read more about NSOperationQueue here

于 2012-10-16T08:45:34.010 回答