2016-07-25 31 views
0

說明文檔中提到: https://developer.apple.com/reference/corespotlight/cssearchableindex?language=objcCoreSpotlight默認索引線程安全

在批處理模式下,客戶花費保護 私人CSSearchableIndex實例併發訪問從 多線程責任;併發調用索引實例有 未定義的結果。

但它沒有提到在非批處理模式下會發生什麼情況。假設我使用默認的可搜索索引,並且索引需要花費不少的時間(1-2秒)。我叫

indexSearchableItems:completionHandler: 

,雖然這索引仍在進行中,我可以

indexSearchableItems:completionHandler: 

再打來?或者我應該保護默認的Searchable Index實例免受自己的併發訪問?

回答

1

根據這些文件,如果我們創建一個私人的CSSearchableIndex,那麼我們有責任保護它免受多線程訪問。默認的CSSearchableIndex是線程安全的。我一直在使用indexSearchableItems:completionHandler:來自多個後臺線程的defaultSearchableIndex,並且從不面臨競態條件或崩潰。