Я создал систему, в которой я могу запросить NSManagedObjectContext из одноэлементного объекта, в зависимости от очереди, в которой он работает.Каждая последовательная очередь отправки GCD связана с определенной задачей и, таким образом, получает свой собственный контекст, хотя все с одним и тем же постоянным координатором хранилища.
Я предполагал, что это решит мои проблемы, связанные с потоками, которыедо сих пор, кажется, это было сделано, но теперь у меня другая проблема: если две последовательные очереди с разными MOC пытаются выполнить контекст, они оба блокируются, и приложение зависает.Так что я пропустил?
"... [I] Если вы создаете один контекст для потока, но все указывают на один и тот же постоянный координатор хранилища, Core Data заботится о доступе к координатору в поточно-безопасном режиме.путь (методы блокировки и разблокировки NSManagedObjectContext обрабатывают рекурсию). "( source )
Что я там прочитал, так это то, что Core Data должна правильно обрабатывать блокировку и разблокировку с моими настройками.Или я понимаю «поточно-ориентированным способом» неправильно в этом случае?
Редактировать: у меня есть словарь, который отображает очередь в контекст.Сначала я хотел работать с потоками, а не с очередями, пока не прочту эту часть:
"Примечание: вы можете использовать потоки, очереди последовательных операций или очереди отправки для параллелизма. Для краткости эта статьявезде используется «нить» для обозначения любого из них ».( источник )