2011-12-23 20 views
3

如果在使用塊枚舉集合的同時使用NSEnumerationConcurrent,Cocoa會保證塊將同時執行嗎?還是它實際上取決於需要枚舉的對象的數量?另外,當操作事實上併發時,Cocoa如何決定啓動多少個線程?NSEnumerationConcurrent是否保證多線程?

編輯:其它問題

在另一方面,被枚舉集合與NSEnumerationConcurrent選擇同步或異步?換句話說,如果枚舉代碼下面有一些代碼,那麼只有在所有併發枚舉都完成後纔會執行它? (主題加入?)

回答

5

不,NSEnumerationConcurrent不保證塊將同時執行。

而且,是的,例如,如果您使用 - [NSArray enumerateObjectsWithOptions:usingBlock:]該調用在枚舉完成之前不會返回。

如果您指定NSEnumerationConcurrent,則當前實現似乎將這些塊安排在全局正常優先級GCD隊列中。我敢肯定,這並不總是如此。

希望有所幫助。

相關問題