Мертвые блокировки при использовании контекста управляемого объекта NSPrivateQueueConcurrencyType в двух потоках - PullRequest
2 голосов
/ 21 февраля 2012

Я использую NSPrivateQueueConcurrencyType NSManagedObjectContext, и в следующей ситуации возникает тупик.

В фоновом потоке сделан вызов executeBlock :.Этот блок содержит executeFetchRequest:error: вызов.

Во время выполнения этого блока основной поток вызывает performBlockAndWait:.Основной поток ожидает завершения блока фонового потока.Это нормально.

Когда в фоновом блоке потока выполняется вызов executeFetchRequest:error:, возникает мертвая блокировка.

Я предполагаю, что executeFetchRequest:error: ожидает основной поток для performBlockAndWait: дляотделки.

Это ошибка?Или я чего-то не понимаю?Мне этот код кажется действительным с NSPrivateQueueConcurrencyType MOCs.

1 Ответ

2 голосов
/ 21 февраля 2012

NSPrivateQueueConcurrencyType не делает автоматически NSManagedObjectContext поточно-ориентированным. Если вам нужно использовать базовые данные в нескольких потоках, вы все равно должны использовать отдельные контексты для каждого потока.

...