atomic的实现机制和安全性

1.atomic的实现机制

用atomic修饰的值类型属性赋值的时候,系统会给getter和setter方法里面加一个锁,来保证同时只有一个线程能访问或者修改该属性。保证读写的原子性。所以atomic能保证属性的存取时是线程安全的

2.atomic为什么不能保证绝对的线程安全?

2.1 因为atomic给getter和setter方法加了锁,但是只能保证存取是安全的,如果我此时创建了一个用atomic修饰的可变数组,atomic无法保证在对数组进行修改是线程安全的

2.2 在编译器自己创建的getter/setter方法里面,最终会调到objc_getProperty和objc_setProperty方法,在这两个方法内部,atomic保证了读写线程的安全。但是,如果我重写了getter/setter方法,那atomic对getter/setter的保护也就没了,这时候就需要自己去维护线程安全了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容