【发布时间】:2011-01-19 22:24:54
【问题描述】:
我读过的关于在多线程上使用 Core Data 的所有内容都在谈论使用多个 NSManagedObjectContext 实例共享一个 NSPersistentStoreCoordinator。这是可以理解的,我已经让它在一个应用程序中工作,该应用程序在主线程上使用 Core Data 以支持 UI,并且有一个可能需要一段时间才能运行的后台获取操作。
问题是对底层SQLite持久化存储的访问是通过NSPersistentStoreCoordinator序列化的,所以还是有UI被后台抓取操作阻塞的情况。
后台获取操作永远不会更新数据,只会从中读取数据。我可以在连接到同一个底层 SQLite 持久存储的后台线程上设置一个完全并行的核心数据堆栈(NSManagedObjectContext、NSManagedPersistentStoreCoordinator 和NSManagedObjectModel)吗?看起来这会在 UI 线程和后台获取操作之间提供完全的并发性。
【问题讨论】: