我正在学习Objective-C,我将开发一个视频处理应用程序。
我正在阅读关于apple的开发人员指南,我遇到了Operation对象。我只需要澄清一下操作与操作之间的区别。线程,缺点,优点,用例。
从我读到的,操作是更高级别的应用程序/任务管理。 NSOperationQueue可以处理操作资源和并发。
我不明白的是,操作可以直接在一个线程中运行,我对这个概念不太清楚。我不清楚操作与操作之间的区别。线程。
请尽可能多地向我提供关于两者的信息/背景。
非常感谢大家。
答案 0 :(得分:2)
NSOperation
和线程之间的区别是抽象之一。线程是一个低级(操作系统级)构造,用于同时执行多个代码“线程”。虽然Cocoa提供了NSThread
API,但它实际上是pthread
API的包装器。 NSOperation
是您希望执行的任务的更高级抽象。 NSOperationQueue
将安排执行NSOperations
的队列,以便最大限度地利用可用的CPU。在多核系统上,将使用NSOperations
维护的线程池同时执行多个NSOperationQueue
。使用此更高级API的优势在于,它可以让您考虑要执行的“操作”,而不是如何安排它们。缺点(因此直接使用NSThread
的优点)是您可以更好地控制线程的调度以及线程与其他线程之间的通信(请参阅-[NSObject performSelector:withObject:onThread:]
)。对于原子任务,例如视频处理,NSOperation
可能是最合适的。