使用NSOperation和NSOperationQueue的好习惯是什么?

时间:2012-07-24 07:25:32

标签: ios multithreading nsoperation nsoperationqueue

我刚开始使用NSOperationNSOperationQueue。我真的想知道使用它们应该是更好的做法。

我应该为整个应用程序创建一个唯一的队列,还是应该为每个特定类型的任务创建一个队列?如果我创建这么多队列会有什么影响?

2 个答案:

答案 0 :(得分:1)

阅读Apple Concurrency Guide的Executing Operations部分。这当然取决于您的实施和应用,但总的来说,只能是同时运行的一定数量的NSOperations,增加NSOperationQueues的数量对您没有任何好处。因此,如果您的设计允许,我的建议是选择1个或更少的队列。

答案 1 :(得分:1)

这取决于你使用它们的目的。如果你使用它们来提高性能,最大限度地提高CPU的性能,那么除了预期的核心数量之外,几乎没有什么意义。

如果您为了保持UI响应而卸载处理,但是您并不特别担心最大限度地提高性能,那么为了简单起见,我只使用默认的后台队列。

如果您正在使用顺序后台队列来触发对外部事件的操作(例如,网络请求完成),那么使用一堆不会造成任何伤害,因为它们不会导致很多线程试图同时运行。

在许多情况下,您可以使用操作队列简化设计。

NSOperationQueues是建立在GCD和AFAIK之上的,只要它们没有尝试同时执行,就不会有大量队列的性能影响。