美文网首页
atomic非绝对线程安全

atomic非绝对线程安全

作者: Gavin008 | 来源:发表于2017-03-23 18:08 被阅读28次

    nonatomic

    非原子性,可以同时执行setter和getter

    atomic

    原子性,保证setter和getter的线程安,不能同时执行setter和getter。

    atomic例子详解

    线程A执行setter,线程B执行getter,若此时设置的是atomic,线程A没执行完sette,线程B的getter被锁住。只有等线程A执行完setter,才能执行线程B中的getter。

    atomic不是绝对线程安全的

    原因如下:

    线程A执行setter,线程B执行setter,然后线程A执行getter,这时候取到的值已经被线程B更改过了。

    例子:@property(atomic,strong) NSMutableArray *array;

    初始化 array = [NSMutableArray new];

    线程A: [array addObject:@"A"];

    线程B: [array removeAllObjects];

    线程A:array[0];//崩溃

    相关文章

      网友评论

          本文标题:atomic非绝对线程安全

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