运营与运营之间的差异Cocoa中的线程

时间:2009-06-22 20:54:13

标签: objective-c operation

我正在学习Objective-C,我将开发一个视频处理应用程序。

我正在阅读关于apple的开发人员指南,我遇到了Operation对象。我只需要澄清一下操作与操作之间的区别。线程,缺点,优点,用例。

从我读到的,操作是更高级别的应用程序/任务管理。 NSOperationQueue可以处理操作资源和并发。

我不明白的是,操作可以直接在一个线程中运行,我对这个概念不太清楚。我不清楚操作与操作之间的区别。线程。

请尽可能多地向我提供关于两者的信息/背景。

非常感谢大家。

1 个答案:

答案 0 :(得分:2)

NSOperation和线程之间的区别是抽象之一。线程是一个低级(操作系统级)构造,用于同时执行多个代码“线程”。虽然Cocoa提供了NSThread API,但它实际上是pthread API的包装器。 NSOperation是您希望执行的任务的更高级抽象。 NSOperationQueue将安排执行NSOperations的队列,以便最大限度地利用可用的CPU。在多核系统上,将使用NSOperations维护的线程池同时执行多个NSOperationQueue。使用此更高级API的优势在于,它可以让您考虑要执行的“操作”,而不是如何安排它们。缺点(因此直接使用NSThread的优点)是您可以更好地控制线程的调度以及线程与其他线程之间的通信(请参阅-[NSObject performSelector:withObject:onThread:])。对于原子任务,例如视频处理,NSOperation可能是最合适的。