CoreSpotlight 默认索引线程安全

CoreSpotlight default index thread safe

文档中提到: https://developer.apple.com/reference/corespotlight/cssearchableindex?language=objc

In batch mode, the client takes responsibility for protecting the private CSSearchableIndex instance from concurrent access from multiple threads; concurrent calls to the index instance have undefined results.

但它没有提到在非批处理模式下会发生什么。所以假设我使用默认的可搜索索引,并且索引需要很长时间(1-2 秒)。我叫

indexSearchableItems:completionHandler:

虽然此索引仍在进行中,但我可以调用

indexSearchableItems:completionHandler:

又来了?或者我应该自己保护默认的 Searchable Index 实例免受并发访问?

根据文档,如果我们创建私有 CSSearchableIndex,那么我们有责任保护它免受多线程访问。默认的 CSSearchableIndex 是线程安全的。我一直在使用 indexSearchableItems:completionHandler: 来自多个后台线程的 defaultSearchableIndex 并且从未遇到过竞争条件或崩溃。