ios - 使用CoreData是否可以在同一线程上具有多个上下文?

标签 ios objective-c multithreading core-data nsmanagedobjectcontext

使用CoreData,可以在同一线程上拥有多个上下文吗?在工作中,我们正在争论主线程上是否有多个上下文会导致死锁。我找不到任何理由不这样做,但是我担心当一个主线程上下文保存并合并到另一个主线程上下文中时,可能会导致死锁。

请注意,似乎有一个实际上根本不相关的相关票证:Multiple contexts in the main thread: why and when use them?此票证仅讨论一般情况下使用多个上下文以及上下文是什么,并且实际上从未讨论过在同一线程上使用多个上下文的任何问题。

最佳答案

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdConcurrency.html

看看这里

http://www.cocoanetics.com/2012/07/multi-context-coredata/

如果您选择不使用线程包含模式(即,如果您尝试在线程之间传递托管对象或上下文,依此类推),则必须非常谨慎地进行锁定,结果很可能会抵消您的任何利益否则可能源自多线程。您还需要考虑以下几点:

每当您操作或访问托管对象时,都将使用关联的托管对象上下文。
核心数据不会出现读取是“安全”但更改是“危险”的情况-每个操作都是“危险”的,因为每个操作都具有缓存一致性影响,并且可能触发错误。

受管对象本身不是线程安全的。
如果要跨不同线程使用托管对象,则必须锁定其上下文。

关于ios - 使用CoreData是否可以在同一线程上具有多个上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29412040/

相关文章:

ios - 获取 UIScrollView 的当前位置

objective-c - Swift 将十六进制字符串或字符转换为整数

ios - 自定义双击放大 MKMapView (Uber like)

ios - CoreData 的 performBlock : and faulting

java - Asynctask类中的静态变量用还是反对?

ios - 如何处理 NSData contentsOfURL EXC_BREAKPOINT 错误

iphone - 无法访问另一个类的@property

ios - 在 Controller 中以编程方式创建 View 强与弱 subview

Java多线程暂停

c++ - 无锁 C++ 数据结构,不可能吗?