假设 CoreData 堆栈配置为使用 Sqlite 作为持久性机制。
据我了解,ManagedObject 和 ManagedObjectContextinstances 都不是线程安全的。PersistentStoreManager 呢,它是线程安全的吗?
换句话说,如果我有多个线程读写同一个持久核心数据存储,我应该实现某种同步解决方案吗?
假设 CoreData 堆栈配置为使用 Sqlite 作为持久性机制。
据我了解,ManagedObject 和 ManagedObjectContextinstances 都不是线程安全的。PersistentStoreManager 呢,它是线程安全的吗?
换句话说,如果我有多个线程读写同一个持久核心数据存储,我应该实现某种同步解决方案吗?
与大多数数据库系统一样,SQLite 实现了自己的并发机制来解决线程/用户冲突。所以不,你不需要自己动手。
也就是说,如果您要进行大量写入争用,SQLite 并不理想。SQLite 在写入期间锁定整个数据库,因此您应该尽量减少发生的并发写入量。
更多关于 SQLite 并发的信息可以在这里找到:
http ://www.sqlite.org/lockingv3.html