iOS中的读写安全方案

1、思考如何实现以下场景
  • 同一时间, 只能有一个线程进行写的操作
  • 同一时间, 允许有多个线程进行读的操作
  • 同一时间,不允许既有写的操作,又有读的操作
2、上面的场景就是典型的“多读单写”,经常用于文件等数据的读写操作,iOS中的实现方案有:

pthread_rwlock:读写锁

 // 初始化锁
    pthread_rwlock_init(&_lock, NULL);

    pthread_rwlock_rdlock(&_lock);
    // 读操作    
    pthread_rwlock_unlock(&_lock);

    
    pthread_rwlock_wrlock(&_lock);
    // 写操作
    pthread_rwlock_unlock(&_lock);

dispatch_barrier_async:异步栅栏调用

  dispatch_queue_t queue = dispatch_queue_create("queue_rw", DISPATCH_CURRENT_QUEUE_LABEL);
    dispatch_async(queue, ^{
        // 读操作  
    });
    
    dispatch_barrier_async(queue, ^{
        // 写操作
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Q:为什么出现多线程? A:为了实现同时干多件事的需求(并发),同时进行着下载和页面UI刷新。对于处理器,为每个线...
    幸福相依阅读 1,750评论 0 2
  • linux编程-线程 MUTEX 一.概述 互斥量是线程同步的一...
    Aska偶阵雨阅读 583评论 0 0
  • 前言 在多线程开发中,常会遇到多个线程访问修改数据。为了防止数据不一致或数据污染,通常采用加锁机制来保证线程安全。...
    赵梦楠阅读 1,167评论 0 5
  • 本文节选自成长手册 文章推荐和参考深入理解 iOS 开发中的锁pthread的各种同步机制 多线程编程被普遍认为复...
    百草纪阅读 2,939评论 1 9
  • 先试试看看简书好用不好用先试试看看简书好用不好用
    outlawer阅读 189评论 0 1

友情链接更多精彩内容