美文网首页
线程安全2

线程安全2

作者: xiari1991 | 来源:发表于2018-02-08 10:55 被阅读7次

【iOS】线程安全的文件读写

通过GCD中的dispatch_barrier_(a)sync加强对sync中所谓等待的理解

线程安全的另外一种方法,不用加锁,使用队列。

队列有个特点,先进先出。不过同步还是异步,添加任务的顺序是不变的。

队列实现线程安全举例:图书馆借书还书线程安全。

借书:应该是异步的
还书:也是异步的。
问题:怎么保证异步借书保证线程安全,不会同时借了同一本书;

dispatch_queue_t queue = dispatch_queue_create("qcdSafe.test", DISPATCH_QUEUE_CONCURRENT);

- (void)takeBook:(int)book {
    
    dispatch_barrier_async(queue, ^{
        [self.arr removeObject:@(book)];
    });
}

- (void)returnBook:(int)book {
    dispatch_async(queue, ^{
        [self.arr addObject:@(book)];
    });
}


使用队列,使用dispatch_barrier_async函数,这个函数会等待所有改任务之前的任务执行完之后才执行,并且之后的任务必须等改任务执行完才会去执行。

使用队列,主要原因就是任务有先后顺序。

相关文章

  • 深入JVM内核原理-4.JVM锁

    1.JVM锁概要 JVM锁概要.png 2.线程安全 JVM线程安全1.pngJVM线程安全2.png 3.对象头...

  • HashMap与HashTable之间的区别

    1.HashMap线程不安全、HashTable线程安全; 2.多线程的情况下使用HashTable能保证数据安全...

  • 多线程与线程安全

    1.线程安全的维度 1.线程间安全,不会产生线程死锁、由线程操作产生的异常崩溃2.线程数据安全,对于同时可读可写的...

  • 设计模式-单例模式

    1.懒汉式-线程不安全 2.懒汉式-线程安全 3.饿汉式-线程安全 4.饿汉式-静态代码块-线程安全 5.懒汉式-...

  • Java问题详解

    1.什么是线程安全? 在《深入理解Java虚拟机(第2版)》中,将线程安全分为了不可变、绝对线程安全、相对线程安全...

  • 创建型模式 --- 单例

    1.懒汉式,线程不安全 2.懒汉式,线程安全 3.饿汉式,线程安全 4.枚举,线程安全 5.双检锁/双重校验锁

  • 面试问题

    1.spring mvc 2.线程安全:主要是问线程安全,static修饰的一定线程安全吗? 3.线程池 4.团队...

  • Java单例的7种写法

    1. 懒汉式(线程不安全) 2. 懒汉式(线程安全) 优点:线程安全; 缺点:加了同步,效率低; 3. 饿汉式 特...

  • 面试总结

    1、数组和链表的区别和联系,他们是线程安全的吗 2、怎么保证线程安全: 线程安全的本质:当多个线程访问一个对象时,...

  • 五 异常与多线程——第三节 线程同步机制

    1、线程安全问题的概述 多线程访问了共享的数据,就会产生线程安全问题 2、线程安全问题的代码实现 输出:会出现重复...

网友评论

      本文标题:线程安全2

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