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