关于多线程操作中的原子属性的问题,我们应在哪种情况下使用原子?

时间:2018-10-28 04:10:32

标签: ios objective-c atomic

我尝试过的事情:

@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的最佳方法?

0 个答案:

没有答案