如果在使用块枚举集合时使用NSEnumerationConcurrent
,Cocoa是否保证该块将同时执行?或者它实际上取决于需要枚举的对象数量?另外,当操作实际上是并发时,Cocoa如何决定启动多少线程?
编辑:其他问题
另一方面,是枚举NSEnumerationConcurrent选项同步还是异步的集合?换句话说,如果您在枚举代码下面有一些代码,它是否仅在所有并发枚举完成后才执行? (线程加入?)
答案 0 :(得分:5)
不,NSEnumerationConcurrent
不保证块将同时执行。
并且,是的,例如,如果你使用 - [NSArray enumerateObjectsWithOptions:usingBlock:]那么在枚举完成之前调用将不会返回。
如果指定NSEnumerationConcurrent
,当前实现似乎会在全局普通优先级GCD队列上安排这些块。我确信不能保证永远是真的。
希望有所帮助。