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

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

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

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

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

非常感谢大家。

有帮助吗?

解决方案

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top