2016-07-25 34 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,并且从不面临竞态条件或崩溃。