文件提到: https://developer.apple.com/reference/corespotlight/cssearchableindex?language=objc
在批处理模式下,客户负责保护 私有CSSearchableIndex实例来自并发访问 多线程;对索引实例的并发调用有 未定义的结果。
但它没有提到在非批处理模式下会发生什么。因此,假设我使用默认的可搜索索引,索引需要花费非常小的时间(1-2秒)。我打电话给
indexSearchableItems:completionHandler:
虽然此索引仍在进行中,但我可以调用
indexSearchableItems:completionHandler:
再次?或者我应该保护默认的可搜索索引实例免遭并发访问?
答案 0 :(得分:1)
根据文档,如果我们创建一个私有CSSearchableIndex,那么我们有责任保护它免受多线程访问。默认的CSSearchableIndex是线程安全的。我一直在使用indexSearchableItems:completionHandler:来自多个后台线程的defaultSearchableIndex,从未面临竞争条件或崩溃。