Objective-C atomic属性不是线程安全的

atomic(原子的),顾名思义,原子操作应该是线程安全的,然而,真相并不是!

1
@property (atomic, strong) NSMutableArray *arr; // 多线程操作arr并不安全 

因为atomic关键字只是保证了getter和setter的原子性,相当于分别在这两个方法首尾加解锁,即不会有多个线程同时调用getter或者setter,伪码如下:

1
2
3
4
5
- (void)setArr:(NSMutableArray *)arr {
    lock;
    self.arr = arr;
    unlock;   
}

但是,除了getter和setter,还可以通过别的方式访问arr,例如addObject和removeObject等等。 

posted @   happyyoung  阅读(334)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示