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 并且从未遇到过竞争条件或崩溃。
文档中提到: 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 并且从未遇到过竞争条件或崩溃。