文档提到:https://developer.apple.com/reference/corespotlight/cssearchableindex?language=objc
在批处理模式中,客户端负责保护私有CSSearchableIndex实例不受多个线程的并发访问;对索引实例的并发调用具有未定义的结果。
但是它没有提到在非批处理模式下会发生什么。因此,假设我使用默认的可搜索索引,索引需要花费大量的时间(1-2秒)。我打电话
indexSearchableItems:completionHandler:当这个索引还在进行的时候,我能打电话给
indexSearchableItems:completionHandler:再次?还是应该自己保护默认的可搜索索引实例不受并发访问的影响?
发布于 2016-07-26 09:35:02
根据文档,如果我们创建了一个私有的CSSearchableIndex,那么我们就有责任保护它不受多线程访问的影响。默认的CSSearchableIndex是线程安全的.我一直在使用来自多个后台线程的indexSearchableItems:completionHandler:在defaultSearchableIndex上,并且从未遇到过争用条件或崩溃。
https://stackoverflow.com/questions/38568701
复制相似问题