Индексный поток CoreSpotlight по умолчанию безопасен

В документации упоминается: https://developer.apple.com/reference/corespotlight/cssearchableindex?language=objc

В пакетном режиме клиент берет на себя ответственность за защиту частного экземпляра CSSearchableIndex от одновременного доступа из нескольких потоков; одновременные вызовы экземпляра индекса имеют неопределенные результаты.

Но это не упоминает, что происходит в не пакетном режиме. Допустим, я использую поисковый индекс по умолчанию, и индексация занимает не тривиальное время (1-2 секунды). Я звоню

indexSearchableItems:completionHandler:

и пока эта индексация еще продолжается, я могу позвонить

indexSearchableItems:completionHandler:

снова? Или я должен сам защитить экземпляр Searchable Index по умолчанию от одновременного доступа?

1 ответ

Решение

В соответствии с документами, если мы создаем частный CSSearchableIndex, то наша обязанность защищать его от многопоточного доступа. CSSearchableIndex по умолчанию является поточно-ориентированным. Я использую indexSearchableItems: завершение Handler: на defaultSearchableIndex из нескольких фоновых потоков и никогда не сталкивался с состоянием гонки или сбоя.

Другие вопросы по тегам