Литература в настоящее время кажется немного скудной о новых типах параллелизма NSManagedObjectContext. Помимо видеоматериалов WWDC 2011 и некоторой другой информации, которую я получил по пути, мне все еще трудно понять, как используется каждый тип параллелизма. Ниже, как я интерпретирую каждый тип. Пожалуйста, поправьте меня, если я что-то неправильно понимаю.
NSConfinementConcurrencyType
Этот тип был нормой в течение последних нескольких лет. MOC защищены от каждой нити. Таким образом, если поток MOC хочет объединить данные из потока B MOC с помощью сообщения сохранения, поток A должен подписаться на уведомление о сохранении MOC потока B.
NSPrivateQueueConcurrencyType
Каждое дерево MOC (родительский и дочерний MOC) совместно используют одну и ту же очередь независимо от того, в каком потоке они находятся. Таким образом, всякий раз, когда отправляется сообщение сохранения из любого из этих контекстов, оно помещается в частный сигнал, специально созданный только для этого дерева MOC.
NSMainQueueConcurrencyType
Все еще смущен этим. Из того, что я понял, это как NSPrivateQueueConcurrencyType, только частная очередь запускается в потоке main . Я читал, что это полезно для связи пользовательского интерфейса с MOC, но почему? Почему я выбрал бы это по NSPrivateQueueConcurrencyType? Я предполагаю, что, поскольку NSMainQueueConcurrencyType выполняется в основном потоке, разве это не учитывает фоновые процессы? Разве это не то же самое, что не использовать потоки?