在我的應用程序中,我創建了一個NSManagedObjectContext實例,兩個線程可以訪問這個實例,並且他們都需要提交更改。如果在兩個線程中同時調用save方法會怎麼樣?上下文中所有NSManagedObject實例的屬性會發生什麼變化?如果一個NSManagedObjectContext實例在兩個線程中同時保存,該怎麼辦?
0
A
回答
3
你不會這樣做。每個thread.CoreData創建兩個單獨的NSManagedObjectContext不是線程安全的..這樣做之前閱讀本文檔與CoreData多線程
1
NSPersistentStoreCoordinator將處理在多個線程或隊列,但它本身的NSManagedObjectContext只應該是有史以來NSManagedObjectContexts適當鎖定在一個線程上使用,它創建的線程(常見的錯誤是在主線程上創建一個MOC,然後將它傳遞給另一個線程 - 不要這樣做)。
正如Tony所表示的那樣,您希望爲每個線程分配一個MOC,共享一個持久存儲協調器,或者爲iOS 5中引入的Core Data使用新的併發模式,允許您創建子上下文和/或使用新的performBlock和performBlockAndWait方法,以確保上下文在正確的線程上執行。
直接回答你的問題是'誰知道'。行爲將是未定義的,你幾乎肯定會遇到隨機崩潰和/或死鎖。
相關問題
- 1. 如果在IE7中有兩個同名Cookie,該怎麼辦?
- 2. 如果一個庫不是多線程,該怎麼辦?
- 3. 如果兩個分離的線程彼此重疊,我該怎麼辦?隊列
- 4. 如果我想在內存緩存中存儲一個None值,該怎麼辦?
- 5. 如果對象在Handlebars.js中只有一個值,該怎麼辦?
- 6. System.Tuple在兩個程序集中,該怎麼辦?
- 7. 如果已經存在同名的cookie,該怎麼辦
- 8. 我該怎麼辦這個效果?
- 9. 如果我在一個腳本中編寫兩個具有相同名稱的類,該怎麼辦
- 10. 如果兩個庫具有完全相同的類,該怎麼辦?
- 11. 如何同步兩個NSManagedObjectContext
- 12. 如果我想用query.setParameter在jpa中設置兩個參數,我該怎麼辦?
- 13. 當Parse.com創建一個sessionToken時,如果這個過期了,該怎麼辦?
- 14. 如果被等待的線程自行分離,該怎麼辦?
- 15. Android queueEvent(new Runnable())如果我有多個承載Renderer的線程,該怎麼辦?
- 16. 如果一個網站沒有API - 該怎麼辦?
- 17. 如果操作系統殺死了一個IntentService,該怎麼辦?
- 18. 每個線程有多個NSManagedObjectContext實例可以嗎?
- 19. 保存在同一個實例的多個記錄在Hibernate中
- 20. 如果我想要一個條件不被檢查兩次,該怎麼辦?
- 21. 怎麼一個一個實例化?
- 22. 風暴實時處理:如果發生故障,該怎麼辦?
- 23. 當我們寫一個用例場景時,如果有一個擴展點,該怎麼辦?
- 24. 如果應用程序緩存已滿,該怎麼辦
- 25. 如果SignalR集線器託管在多個服務器上,該怎麼辦?
- 26. 當兩個libjpeg庫衝突時,我該怎麼辦
- 27. A ParameterizedThreadStart問題:如果一個方法返回一個對象,該怎麼辦?
- 28. 在兩個線程中同時中止()
- 29. 我應該複製一個類的實例來實現這個嗎?如果是的話,我該怎麼做?
- 30. 使用線程同時創建一個類的十個實例