Objective c 多个NSOperationQueues=多个线程?

Objective c 多个NSOperationQueues=多个线程?,objective-c,multithreading,nsoperationqueue,Objective C,Multithreading,Nsoperationqueue,我想知道,如果我的每个视图控制器中都有一个NSOperationQueue,是否会有许多线程,也就是说,我的应用程序中有许多NSOperationQueue 谢谢。每个NSOperationQueue在运行时,其当前NSOperation的执行在单独的线程上 如果您调用了-setMaxConcurrentOperationCount:传入1,则保证在任何给定时间队列中只运行一个NSOperation。(即串行队列。) 否则,您的NSOperationQueue在任何给定时间都可能有多达NSOpe

我想知道,如果我的每个视图控制器中都有一个NSOperationQueue,是否会有许多线程,也就是说,我的应用程序中有许多NSOperationQueue


谢谢。

每个
NSOperationQueue
在运行时,其当前
NSOperation
的执行在单独的线程上

如果您调用了
-setMaxConcurrentOperationCount:
传入
1
,则保证在任何给定时间队列中只运行一个
NSOperation
。(即串行队列。)


否则,您的
NSOperationQueue
在任何给定时间都可能有多达
NSOperationQueueDefaultMaxConcurrentOperationCount
个线程运行。

队列数量、并发操作计数和系统线程使用率之间没有严格的一对一关系。NSOperationQueue是在GCD之上构建的(从10.6和iOS开始),因此,它的线程使用将受到系统的限制。@AshleyClark我在NSOperationQueue类参考文档中看到了这一点:注意:在iOS中,操作队列不使用Grand Central Dispatch来执行操作。它们为非并发操作创建单独的线程,并从当前线程启动并发操作。有关并发操作和非并发操作之间的区别及其执行方式的讨论,请参阅NSOperation类参考。请记住,GCD在iOS上直到4.0才可用,而NSOperationQueue在2.0中可用。仅仅因为它当时不是建立在GCD之上,并不意味着它现在不是。在任何情况下,都很容易验证,在NSOperation的-main方法中设置一个断点,然后查看回溯是什么样子。如果它包含“dispatch_*”函数,那就是GCD。