Все, что я читал об использовании Core Data в нескольких потоках, говорит об использовании нескольких NSManagedObjectContext
экземпляров, совместно использующих один NSPersistentStoreCoordinator
. Это понятно, и я заставил это работать в приложении, которое использует Core Data в основном потоке для поддержки пользовательского интерфейса и имеет операцию фоновой выборки, выполнение которой может занять некоторое время.
Проблема в том, что доступ к лежащее в основе постоянное хранилище SQLite сериализуется NSPersistentStoreCoordinator
, поэтому все еще есть случаи, когда пользовательский интерфейс блокируется операцией фоновой выборки.
Операция фоновой выборки никогда не обновляет данные, а только считывает их. Могу ли я настроить полностью параллельный стек основных данных ( NSManagedObjectContext
, NSManagedPersistentStoreCoordinator
, и NSManagedObjectModel
) в фоновом потоке, подключенном к тому же базовому постоянному хранилищу SQLite? Похоже, что это даст полный параллелизм между потоком пользовательского интерфейса и операцией фоновой выборки.