我对线程的理解NSManagedObjectContext
是它只能在创建它的线程上执行核心数据获取请求、删除等。有什么方法可以检查哪些线程NSManagedObjectContext
创建于,或者如果在特定的执行点当前线程是特定的线程NSManagedObjectContext
?
Thanks!
我对 NSManagedObjectContext 线程的理解是,它只能在创建它的线程上执行核心数据获取请求、删除等。
这不太准确。更好的说法是,上下文不能被多个线程或队列同时使用。处理此问题的常见方法是为每个线程/队列创建不同的上下文。也可以使用performBlock
and performBlockAndWait
方法在多个线程上使用上下文,同时保持上下文访问有效地单线程。
因此,上下文没有任何属于线程或队列的概念,线程也没有对在其上创建的上下文的任何引用。
如果您采用每个线程或队列一个上下文的方法,则需要跟踪代码将运行的位置并使用适当的上下文。例如,当使用 GCD 时,为特定的调度队列创建一个上下文,并且仅当您使用过类似的东西时才使用它dispatch_async
在该队列上运行。
如果您确实想将上下文与队列链接起来,您可以使用自己的数据结构从您正在使用的任何并发方案中查找上下文 - 按当前NSOperationQueue
,或调度队列,或NSThread
, 管他呢。这很少需要,但如果您找不到更好的技术,这是可能的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)