我尝试过的事情:
@property (nonatomic, assign) int count;
在全局队列中:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i = 0; i < 10000; i ++) {
self.count ++;
}
});
在主队列中:
for (int i = 0; i < 10000; i ++) {
self.count ++;
}
这些操作完成后,由于数据争用(Xcode指出),日志显示计数值低于20000。
然后,我将属性从nonatomic
更改为atomic
,其值仍低于20000,并且没有Data Race(Xcode并未指出)
所以,我对atomic
有一些疑问,我们应该在哪种情况下使用atomic
?哪种是使用atomic
的最佳方法?