2009-06-22 52 views
0

我正在学习Objective-C,我将开发一个视频处理应用程序。Cocoa中操作和线程的区别

我正在阅读关于苹果的开发者指南,并且遇到了操作对象。我只是需要一些说明&线程,缺点,优点,用例之间的区别。

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

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

请为我提供尽可能多的信息/背景。

非常感谢大家。

回答

2

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

+0

谢谢巴里 我的程序是一个视频潜水员的测试应用程序。因此它需要解码视频文件的编解码器,将其传递给应用程序,并将其显示在应用程序窗口中。在我的应用程序中,视频文件的多个帧同时被解码,并且不能保证解码帧将以文件帧顺序显示。解码后的帧会显示在屏幕上,我认为这是另一个线程。 在您看来,我应该使用回调函数,线程或操作。因为应用程序有特定的任务,所以我只需要完成操作。 – ReachConnection 2009-06-22 22:26:17

相关问题