CoreData問(wèn)題:需要對(duì)persistentCoordina加鎖,但不知道加在哪些代碼合適。不同的NSManagedObjectContext,但公用同一個(gè)NSPersistentCoordinator,是否允許兩個(gè)線程同時(shí)進(jìn)行讀操作,而不對(duì)NSPersistentCoordinator進(jìn)行l(wèi)ock?還是不管讀和寫(xiě),都需要對(duì)lockcoordinator?之前雖然是多線程操作coredata,沒(méi)加lock,但是由于工作線程并沒(méi)有很頻繁的操作數(shù)據(jù)庫(kù),因此沒(méi)出問(wèn)題。但是現(xiàn)在我的工作線程需要2分鐘一次對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢、更新的邏輯,所以程序有時(shí)可以運(yùn)行,有時(shí)executeFetch時(shí)候會(huì)卡死,報(bào)的錯(cuò)誤是deadlock,死鎖!很奇怪,我這時(shí)候根本就沒(méi)對(duì)數(shù)據(jù)庫(kù)加過(guò)鎖??!是因?yàn)椋琧oordinator對(duì)所有的操作,都會(huì)序列化(serializeoperations),然后多線程操作coredata時(shí)候,我代碼里面沒(méi)有l(wèi)ockcoordinator,所以就出現(xiàn)了deadlock的錯(cuò)誤?多謝大家的關(guān)注或回答??!
CoreData多線程的同步問(wèn)題
暮色呼如
2019-03-29 11:00:26