zoukankan      html  css  js  c++  java
  • Objective-C atomic属性不是线程安全的

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

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

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

    - (void)setArr:(NSMutableArray *)arr {
    	lock;
    	self.arr = arr;
    	unlock;    
    }
    

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

  • 相关阅读:
    gin内置验证器使用
    model
    work,工作模式
    orm框架
    simple模式下rabbitmq的代码
    rabbitmq介绍
    订阅模式
    路由模式
    redis五大数据类型
    Go操作redis
  • 原文地址:https://www.cnblogs.com/yangwenhuan/p/10034794.html
Copyright © 2011-2022 走看看