我初始化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;地址是重复的,但有时却不是。
答案 0 :(得分:0)
来自NSOperation
文件
操作可以在任何线程中执行
因此,有时两个操作可能在同一个线程上运行。这取决于NSOperationQueue的发送。
例如,您在4核CPU上运行它,当您添加4个操作时,它可能会创建四个线程,以便每个核心运行一个线程。但是当你添加第5个操作时,它只是将它添加到现有线程以在同一个核心上运行。
仅仅是我的理解。