gpt4 book ai didi

iphone - 什么叫CoreData不是线程安全的?

转载 作者:太空狗 更新时间:2023-10-30 03:27:30 31 4
gpt4 key购买 nike

在Obj-C中,简单来说是什么意思;“CoreData 不是线程安全的”

或者一般来说什么是“非线程安全”?

最佳答案

@d11wtq 的答案只有在编写您自己的代码或设计您自己的 API 时才是正确的

在使用一组 API 时这是完全错误的,在使用 Core Data 时尤其错误。

在使用 Mac OS X 和 iOS 的上下文中,必须始终在使用系统 API 的上下文中考虑线程安全。即使使用 NSArray,也意味着您正在使用系统 API。

OR in general what is "not thread safe" ?

非线程安全 API 是一种您无法同时从多个线程与 API 交互的 API。可能还存在通常涉及主线程的其他限制。例如,几乎所有的绘图操作都必须发生在 Mac OS X 和 iOS 的主线程上。

Apple 文档假定线程安全是异常(exception)情况。也就是说,只有当文档明确声明线程安全时,API 才是线程安全的。如果没有提及线程安全,您必须假设该 API 不是线程安全的。

In Obj-C, what does it mean in simple terms; "CoreData is not thread safe"

这个说法不太正确,但这是一个安全的假设。

在 Core Data 的例子中,线程交互行为是 extremely well documented .

简而言之,部分 API 是线程安全的(例如存储协调器),而部分则明显不是线程安全的。虽然 MOC 提供锁定和解锁方法,但您也可以使用外部锁定。但是不要。它的效率会更低,也更脆弱;显然如此。通常,也不要使用内部锁定。 CoreData 针对每个线程/队列有一个上下文进行了优化。

(根据 TC 的反馈确定答案。谢谢。)

关于iphone - 什么叫CoreData不是线程安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4545531/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com