美文网首页
iOS 保证数据的线程安全

iOS 保证数据的线程安全

作者: 代码之路 | 来源:发表于2020-08-05 17:25 被阅读0次

一,创建一个串行的GCD队列

二,用GCD栏栅函数dispatch_barrier_async和dispatch_barrier_sync

因为读取是并发的并且同步的因为需要马上得到返回的结果 ,写必须是单独执行的。栅栏函数的作用是分割函数执行,只有执行完栅栏函数以后才可以执行后面的任务,利用这个特点,可以把写操作放在栅栏函数里,这样等数据修改完以后才可以读取。保证了线程安全。

- (void)setValue:(NSString *)value

forHTTPHeaderField:(NSString *)field

{

    dispatch_barrier_async(self.requestHeaderModificationQueue, ^{

        [self.mutableHTTPRequestHeaders setValue:value forKey:field];

    });

}

- (NSString *)valueForHTTPHeaderField:(NSString *)field {

    NSString __block *value;

    dispatch_sync(self.requestHeaderModificationQueue, ^{

        value = [self.mutableHTTPRequestHeaders valueForKey:field];

    });

    return value;

}

三,使用锁

相关文章

  • iOS 各种锁

    概述 iOS多线程开发,会出现数据竞争,因此需要锁来保证线程安全。 线程安全 当一个线程访问资源时,需要保证其它的...

  • iOS 保证数据的线程安全

    一,创建一个串行的GCD队列 二,用GCD栏栅函数dispatch_barrier_async和dispatch_...

  • ArrayList 和 linkedList 异同

    是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全。 底层数据结...

  • HashMap与HashTable之间的区别

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

  • IOS多线程安全(线程锁)

    线程安全 线程的不安全是由于多线程访问和修改共享资源而引起的不可预测的结果。ios多线程开发中为保证线程的安全常用...

  • java并发关键字 Synchronized关键字

    在多线程环境下为了保证数据安全,需要用到互斥锁保证多线程对数据操作的安全性。Synchronized关键字可以修饰...

  • JAVA题库(三)

    1.java常用的数据结构有哪些?哪些是线程安全的?是怎么保证线程安全的? 答: 什么时候需要使用线程安全的数据结...

  • iOS多线程锁的分析

    锁的目的保证线程安全,那么什么是$\color{red}{线程安全}$? 当一个线程访问数据的时候,其他的线程不能...

  • ArrayList 与 LinkedList 线程与底册数据结构

    ArrayList 与 LinkedList 区别 是否线程安全:都是不同步的,也就是不保证线程安全; 底层数据结...

  • ArrayList 与 LinkedList 区别

    是否线程安全:都是不同步的,也就是不保证线程安全; 底层数据结构:ArrayList 底层使用的是 Object[...

网友评论

      本文标题:iOS 保证数据的线程安全

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