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