美文网首页
证明atomic非线程安全

证明atomic非线程安全

作者: 一丝无尘 | 来源:发表于2018-12-14 15:57 被阅读0次
#import "ViewController.h"

@interface ViewController ()

@property (atomic, copy) NSMutableArray *testArray;

@end

@implementation ViewController {
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.testArray = [NSMutableArray array];
    //创建自定义并行队列
    dispatch_queue_t queue = dispatch_queue_create("com.gcdTest.queue", DISPATCH_QUEUE_CONCURRENT);
    for (int i = 0 ; i < 1000; i ++) {
        dispatch_async(queue, ^{
            [self.testArray addObject:@"1"];
        });
        dispatch_async(queue, ^{
            NSLog(@"--------%@--------", self.testArray);
        });
        dispatch_async(queue, ^{
            [self.testArray addObject:@"1"];
        });
    }
}

这是程序就会闪退

#import "ViewController.h"

@interface ViewController ()

@property (atomic, copy) NSMutableArray *testArray;

@end

@implementation ViewController {
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.testArray = [NSMutableArray array];
    //创建自定义并行队列
    dispatch_queue_t queue = dispatch_queue_create("com.gcdTest.queue", DISPATCH_QUEUE_CONCURRENT);
    for (int i = 0 ; i < 1000; i ++) {
        dispatch_async(queue, ^{
            self.testArray = [@[@"1", @"2"] mutableCopy];
        });
        dispatch_async(queue, ^{
            NSLog(@"--------%@--------", self.testArray);
        });
        dispatch_async(queue, ^{
            self.testArray = [@[@"2"] mutableCopy];
        });
    }
}

这样只是操作了testArray 的set getter 方法,就不会闪退,atomic本身只是在set和getter时加了一把锁

相关文章

  • 证明atomic非线程安全

    这是程序就会闪退 这样只是操作了testArray 的set getter 方法,就不会闪退,atomic本身只是...

  • nonatomic和atomic的区别

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

  • iOS 中atomic与nonatomic区别,以及atomic

    atomic 与 nonatomic 区别 nonatomic:非原子属性,线程不安全的,效率高atomic:原子...

  • iOS开发中用到的关键字总结

    1.原子(atomic)跟非原子(non-atomic)属性有什么区别? (1). atomic提供多线程安全。是...

  • 原子属性

    非原子属性nonatomic 和原子属性atomic 原子属性atomic:就是为了保证这个属性的安全性(线程安全...

  • atomic 和noatomic

    nonatomic:非原子的,非线程安全的,适合内存小的移动设备atomic:原子的,线程安全的 不写的话默认就是...

  • ios 原子性和非原子性

    原子性和非原子行相对于线程的安全来讲 nonatomic:非原子属性,线程不安全的,效率高 atomic:原子属性...

  • iOS中属性关键词

    1.原子性与非原子性 atomic:原子性,只有一个线程可以同时访问实例。atomic 是线程安全的(因为会为se...

  • 多线程——原子、非原子,自旋锁和互斥锁无标题文章

    多线程——原子、非原子,自旋锁和互斥锁 nonatomic:非原子属性,线程不安全,但是效率高atomic:原子属...

  • iOS atomic和nonatomic

    nonatomic:非原子属性,线程不安全的,效率高atomic:原子属性,线程安全的,效率相对低。原子属性是一种...

网友评论

      本文标题:证明atomic非线程安全

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