hmt*_*hur 9 iphone multithreading objective-c nsthread
在Obj-C中,简单来说意味着什么; "CoreData不是线程安全的"
或者一般来说什么是"非线程安全"?
bbu*_*bum 23
只有在编写自己的代码或设计自己的API时, @ d11wtq的答案才是正确的.
使用一组API时完全不正确,而使用Core Data时则完全错误.
在使用Mac OS X和iOS的环境中,必须始终在使用系统API的上下文中考虑线程安全性.即使使用NSArray,也意味着您正在使用系统API.
或者一般来说什么是"非线程安全"?
非线程安全API是一种API,您无法同时从多个线程与API进行交互.可能还有其他限制,通常涉及主线程.例如,几乎所有绘图操作都必须在Mac OS X和iOS上的主线程上进行.
Apple文档假定线程安全是例外情况.也就是说,如果文档明确声明线程安全,则API仅是线程安全的.如果没有提及线程安全性,则必须假定API不是线程安全的.
在Obj-C中,简单来说意味着什么; "CoreData不是线程安全的"
这种说法不太正确,但这是一个安全的假设.
在Core Data的案例中,线程交互行为记录得非常好.
简而言之,API的一部分是线程安全的(例如,商店协调器),而且部分非常明确地不是线程安全的.虽然MOC提供锁定和解锁方法,但您也可以使用外部锁定.但不要.它效率低下,脆弱; 非常重要.通常,也不要使用内部锁定.CoreData针对每个线程/队列的上下文进行了优化.
(根据TC的反馈确定答案.谢谢.)