我已经看到了这个问题:
原子和非原子属性之间有什么区别?
我明白这@atomic不保证线程安全,我必须使用其他机制(例如@synchronized)来实现.在此基础上,我不知道还确切地时使用@atomic的属性.我想知道用例使用的@atomic孤独.
atomic属性的典型用例是在跨多个线程处理原始数据类型时.例如,假设您有一些后台线程正在进行一些处理,并且您有一些BOOL状态属性,例如isProcessComplete,您的主线程想要检查后台进程是否完成:
if (self.isProcessComplete) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,声明此属性atomic允许我们跨多个线程使用/更新此属性,而不需要任何更复杂的同步机制,因为:
BOOL;atomic; 和self.)而不是直接访问ivar.处理对象或其他更复杂的情况时,atomic通常是不够的.正如您所指出的,在实践中atomic,单独使用很少能够实现线程安全,这就是我们不经常使用它的原因.但是对于简单的,独立的原始数据类型,atomic可以是确保跨多个线程安全访问的简单方法.
| 归档时间: |
|
| 查看次数: |
1152 次 |
| 最近记录: |