我刚开始使用NSOperation
and NSOperationQueue
。我真的很想知道使用它们应该是更好的做法。
我应该为整个应用程序只创建一个队列,还是应该为每种特定类型的任务创建一个队列?如果我创建这么多队列有什么影响?
我刚开始使用NSOperation
and NSOperationQueue
。我真的很想知道使用它们应该是更好的做法。
我应该为整个应用程序只创建一个队列,还是应该为每种特定类型的任务创建一个队列?如果我创建这么多队列有什么影响?
阅读 Apple 并发指南的执行操作部分。这当然取决于您的实现和应用程序,但总而言之,只能同时运行一定数量的 NSOperations 并且增加 NSOperationQueues 的数量对您没有任何好处。因此,如果您的设计允许,我的建议是选择 1 个或更少的队列。
这取决于您使用它们的目的。如果您将它们用于性能,最大限度地利用 CPU,那么除了您期望拥有的内核数量之外,没有什么意义。
如果您只是为了保持 UI 响应而卸载处理,但您并不特别关心最大化性能,为了简单起见,我只使用默认后台队列。
如果您使用顺序后台队列来触发外部事件的操作(例如,网络请求完成),那么使用一堆没有任何害处,因为它们不会导致很多线程尝试运行同时。
在许多情况下,您可以使用操作队列来简化设计。
NSOperationQueues 建立在 GCD 和 AFAIK 之上,只要它们不尝试同时执行,加载队列就不会影响性能。