В момента литературата изглежда малко оскъдна за новите типове едновременност NSManagedObjectContext. Освен видеоклиповете от WWDC 2011 и друга информация, която събрах по пътя, все още ми е трудно да разбера как се използва всеки тип едновременност. По-долу е как тълкувам всеки тип. Моля, поправете ме, ако разбирам нещо неправилно.
NSConfinementConcurrencyType
Този тип е норма през последните няколко години. MOC са екранирани от всяка нишка. Така че, ако MOC на нишка A иска да обедини данни от MOC на нишка B чрез съобщение за запазване, нишка A ще трябва да се абонира за известие за запазване на MOC на нишка B.
NSPrivateQueueConcurrencyType
Всяко MOC дърво (родителски и подчинени MOC) споделят една и съща опашка, без значение в коя нишка е всеки. Така че всеки път, когато се изпрати съобщение за запазване от някой от тези контексти, то се поставя в частна реплика, специално създадена само за това MOC дърво.
NSMainQueueConcurrencyType
Все още съм объркан от този. От това, което разбирам, е като NSPrivateQueueConcurrencyType, само частната опашка се изпълнява в главната нишка. Четох, че това е от полза за комуникацията на потребителския интерфейс с MOC, но защо? Защо да избера това пред NSPrivateQueueConcurrencyType? Предполагам, че тъй като NSMainQueueConcurrencyType се изпълнява в основната нишка, това не позволява ли фонови процеси? Това не е ли същото като да не използвате нишки?