CoreData: обновление в фоновом режиме и чтение в основном потоке вызывает мертвую блокировку

Я показываю пользователю таблицу с некоторыми данными. Как только представление представлено, я делаю веб-вызов, чтобы узнать, есть ли обновленные данные (асинхронно). Когда вызов службы вернется, я хочу обновить свои основные данные и представление.

К сожалению, я часто получаю мертвые блокировки, потому что представление считывает те же данные, что и записывает вызов службы. Как я могу решить эту проблему?

Когда я приостанавливаю симулятор, как только он замораживается, ожидающие потоки ждут в следующих местах:

Фоновый (обновляющий) поток: (psynch_cvwait)

[mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
                              withObject:notification
                           waitUntilDone:YES];

Главный поток: (psynch_mutexwait ) выполнение filterArrayUsingPredicate

Большое спасибо!

6
задан swalkner 22 November 2011 в 12:39
поделиться