如果在使用块枚举集合时使用NSEnumerationConcurrent
,Cocoa是否保证该块将同时执行?还是实际上取决于需要枚举的对象数量?另外,当操作实际上是并发的时,Cocoa如何决定要启动多少个线程?
编辑:附加问题
另一方面,使用NSEnumerationConcurrent选项枚举集合是同步的还是异步的?换句话说,如果枚举代码下面有一些代码,是否仅在所有并发枚举完成后才执行? (线程加入?)
最佳答案
不,NSEnumerationConcurrent
不保证这些块将同时执行。
而且,是的,例如,如果您使用-[NSArray enumerateObjectsWithOptions:usingBlock:],则在枚举完成之前该调用不会返回。
如果您指定NSEnumerationConcurrent
,当前的实现似乎在全局正常优先级GCD队列上调度这些块。我敢肯定,这不一定总是正确的。
希望能有所帮助。