[英]Difference between operations & threads in Cocoa
我正在学习Objective-C,我将开发一个视频处理应用程序。
我正在阅读有关Apple的开发人员指南,并且遇到了Operation对象。 我只需要澄清操作和线程,缺点,优点,用例之间的区别。
据我了解,操作是更高级别的应用程序流程/任务管理。 NSOperationQueue可以处理操作资源和并发性。
我不了解的是Operation可以直接在线程中运行,我对此概念不太清楚。 我不清楚操作和线程之间的区别。
请向我提供有关这两者的尽可能多的信息/背景。
非常感谢大家。
NSOperation
和线程之间的区别是抽象之一。 线程是低级(操作系统级)结构,可同时执行多个“线程”代码。 尽管Cocoa提供了NSThread
API,但它实际上是pthread
s API的包装。 NSOperation
是您希望执行的任务的高层抽象。 NSOperationQueue
将安排执行NSOperations
队列,以便最大程度地利用可用的CPU。 在多核系统上,将使用NSOperationQueue
维护的线程池同时执行多个NSOperations
。 使用此更高级别的API的优点在于,它使您可以考虑要执行的“操作”,而不是如何安排它们。 缺点(以及直接使用NSThread
的优点)在于,您可以更好地控制线程的调度以及该线程与其他线程之间的通信(请参见-[NSObject performSelector:withObject:onThread:]
)。 对于原子任务,例如视频处理, NSOperation
可能是最合适的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.