关于NSOperationQueue,为什么有时NSThreads'地址是重复的,但有时不是

时间:2015-06-10 03:50:18

标签: ios

我初始化5 NSInvocationOperation并将它们添加到NSOperationQueue

 queue.maxConcurrentOperationCount = 5;
[queue addOperation:operation1];
[queue addOperation:operation2];
[queue addOperation:operation3];
[queue addOperation:operation4];
[queue addOperation:operation5];

当操作工作时:

2015-06-10 11:45:14.599 NSOperation[9596:102063] Operation1 thead:<NSThread: 0x7fe55b714fe0>{number = 9, name = (null)}
2015-06-10 11:45:14.599 NSOperation[9596:102068] Operation2 thead:<NSThread: 0x7fe55b728e50>{number = 10, name = (null)}
2015-06-10 11:45:14.599 NSOperation[9596:102069] Operation3 thead:<NSThread: 0x7fe55b737da0>{number = 11, name = (null)}
2015-06-10 11:45:14.599 NSOperation[9596:102070] Operation4 thead:<NSThread: 0x7fe55b6257c0>{number = 12, name = (null)}
2015-06-10 11:45:14.599 NSOperation[9596:102063] Operation5 thead:<NSThread: 0x7fe55b714fe0>{number = 9, name = (null)}

为什么有时NSThreads&#39;地址是重复的,但有时却不是。

1 个答案:

答案 0 :(得分:0)

来自NSOperation文件

  

操作可以在任何线程中执行

因此,有时两个操作可能在同一个线程上运行。这取决于NSOperationQueue的发送。

例如,您在4核CPU上运行它,当您添加4个操作时,它可能会创建四个线程,以便每个核心运行一个线程。但是当你添加第5个操作时,它只是将它添加到现有线程以在同一个核心上运行。

仅仅是我的理解。