美文网首页
atomic是不是线程安全的?

atomic是不是线程安全的?

作者: 成都老刘 | 来源:发表于2019-06-26 21:43 被阅读0次

记得以前面试的时候,有面试官问到atomic安全不安全,今天突然想起了这个问题,再总结记录一下。

结论

atomic是线程不安全的。

atomic只是保证了getter和setter存取方法的线程安全,但并不能保证这个属性所对应的成员变量是线程安全的。

解释

意思就是: 如果多个线程调用了getter或者setter,那么这些getter和setter的调用时线性的, 保证了同一时间只有一个函数(setter和getter)在调用, 但是并不能避免这个属性所对应的成员变量是线程安全的。

例如:

@property (atomic) NSString * name; 

系统自动生成的getter:

-(NSString *)name;

Setter:

-(void)setName:(NSString *)name;

假设name所对应的成员变量是_name

atomic保证的是,setter和getter是线程安全的。
如,线程1调用getter了,线程2调用了setter,线程3调用了setter,那么atomic保证了一个线程的调用顺序:getter->setter->setter.

但是atomic并不能保证成员变量_name的线程安全。例如上面的例子中, 如果有个线程4直接release了_name, 那么在线程1、线程2或者线程3的调用过程中, 直接造成崩溃。

相关文章

  • nonatomic和atomic的区别

    nonatomic:非线程安全 atomic:线程安全 atomic对属性的set 和get方法进行加锁,保证当前...

  • 问题:使用atomic一定是线程安全的吗?

    atomic不是绝对的线程安全。atomic的本意是指属性的存取方法是线程安全的,并不保证整个对象是线程安全的。 ...

  • atomic是不是线程安全的?

    序 记得以前面试的时候,有面试官问到atomic安全不安全,今天突然想起了这个问题,再总结记录一下。 结论 ato...

  • 题库整理(一)

    1.atomic和nonatomic的区别?atomic一定是线程安全的吗?atomic如何实现atomic? a...

  • 2020-09-16

    2020年iOS面试 记录一下自己遇到的面试题 百度: 1.atomic是不是线程安全的?怎么保证线程安全? 2....

  • atomic与线程安全

    本篇文章采用的源码是objc4-781版本 使用atomic一定是线程安全的吗? atomic不是绝对的线程安全。...

  • iOS编程中atomic和nonatomic的区别

    atomic atomic 的本意是指属性的存取方法是线程安全(thread safe).但不保证整个对象都是线程...

  • IOS 原子性和非原子性

    atomic:原子性,只有一个线程可以同时访问实例。atomic 是线程安全的(因为会为setter方法加锁)默认...

  • iOS编程各个修饰符分别

    atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全。在多线程环境下,原子操作...

  • atomic和nonatomic 的区别

    property 定义属性来修饰用的atomic,nonatomic atomic:保证线程安全的,速度不快,因为...

网友评论

      本文标题:atomic是不是线程安全的?

      本文链接:https://www.haomeiwen.com/subject/qrahcctx.html