美文网首页
GCD 实例用法

GCD 实例用法

作者: zh_19 | 来源:发表于2018-12-03 19:28 被阅读0次

读写锁

读写锁的特点:

  1. 可以多方同时读
  2. 写是互斥的
  3. 新读取的东西必须是写后的

我们可以利用queue中barrier的特性


image.png

图片来源 grand-central-dispatch-tutorial-for-swift-4-part-1-2

由上图所示 当concurrent队列里有BarrierTask时,此时队列就像serial队列一样,只有当BarrierTask执行结束后,队列才会恢复正常

代码如下

class RWLock {
    private var concurrentQueue: DispatchQueue
    
    init(qos: DispatchQoS = .default) {
        concurrentQueue = DispatchQueue(label: "com.RWLock.label", qos: qos, attributes: .concurrent)
    }
    
    func read<T>(execute work: @escaping () -> T) -> T {
        var t: T!
        concurrentQueue.sync {
            t = work()
        }
        return t
    }
    
    func write(execute work: @escaping () -> Void) {
        concurrentQueue.async(flags: .barrier) {
            work()
        }
    }
}

Concurrency Looping

并发执行这个loop, 是同步调用并且所有工作都完成才会返回。

DispatchWorkItem

相关文章

  • GCD 实例用法

    读写锁 读写锁的特点: 可以多方同时读 写是互斥的 新读取的东西必须是写后的 我们可以利用queue中barrie...

  • dispatch_group和dispatch_barrier的

    前天被人问到使用GCD做依赖的用法,结果完全答不上来,下来之后就搜索了一下GCD的高级用法,发现自己对于GCD的掌...

  • iOS面试--GCD常见用法

    项目中常见的GCD用法有已下几种: 1.GCD栅栏函数2.GCD快速迭代(遍历)3.GCD队列组的使用 1.GCD...

  • GCD

    iOS多线程 Swift4 GCD深入解析swift GCD 的一些高级用法GCD 之线程组(Dispatch G...

  • iOS - GCD中的定时器

    GCD定时器优点:① GCD定时器不受RunLoop约束② 比NSTimer更加准时。 GCD定时器用法敲 dis...

  • GCD用法简介

    GCD用法 GCD Dispatch Queue介绍 苹果官方对GCD的说明:开发者要做的只是定义想执行的任务并追...

  • Retrofit接口实例

    一、接口实例 二、TODO 1、Part、 PartMap、MultilPart用法实例2、Streaming用法...

  • iOS多线程

    iOS多线程实现方案 GCD(Grand Central Dispatch) 一、基本用法GCD会自动利用更多的C...

  • iOS开发之GCD串行队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 实例d...

  • iOS进阶-GCD信号量-dispatch_semaphore_

    目录 GCD信号量概念 使用API 实例使用 GCD信号量概念 使用API : dispatch_semaphor...

网友评论

      本文标题:GCD 实例用法

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