美文网首页Swift学习笔记
Swfit - Dispath信号量枷锁

Swfit - Dispath信号量枷锁

作者: aven_kang | 来源:发表于2022-05-15 13:53 被阅读0次
public struct Cache {
    
    private static var data = [String:Any]()
    
    private static var lock = DispatchSemaphore(value: 1)
    
    public static func get(_ key:String) -> Any? {
        
        data[key]
        
    }
    
    public static func set(_ key:String,_ value:Any) {
        
        lock.wait()
        
        defer {
            lock.signal()
        }
        data[key] = value
        
    }
}

创建了一个信号量DispatchSemaphore(value: 1),一次只能执行一次,在需要上锁的地方lock.wait(),一般来说,在事情做完之后,需要解锁的,lock.signal(),但是为了安全起见,data[key] = value这个可能赋值失败,如果lock.signal()写在data[key] = value之后,可能就无法执行了,所以使用defer更安全

相关文章

  • Swfit - Dispath信号量枷锁

    创建了一个信号量DispatchSemaphore(value: 1),一次只能执行一次,在需要上锁的地方lock...

  • GCD学习笔记

    Grand Central Dispatch(GCD) 1.Dispatch Queue Dispath Queu...

  • 血案之button

    关注swfit专题可以让你学习swfit更简单,群号:512847147 大家在开发中最熟悉应该就是button了...

  • dispath_timer_t

    https://blog.csdn.net/wpeng20125/article/details/73650569

  • 第二章 信号量机制及几个经典例题

    1.信号量机制 信号量机制即利用pv操作来对信号量进行处理。 什么是信号量?信号量(semaphore)的数据结构...

  • 7.31 序列化 json

    将json文件转为Swfit文件

  • swift 求绝对值

    swfit 5 求绝对值

  • iOS底层--GCD应用

    手动目录GCD简介信号量信号量的理解信号量的使用信号量的代码实操信号量阻塞哪里的任务?栅栏函数dispatch_b...

  • iOS GCD使用详解

    Grand Central Dispath(GCD):是iOS 4和OS X Snow Leopard 开始引入的...

  • dispatch_semaphore_t

    dispatch_semaphore_t :信号量包含三个函数:1、创建信号量 2、增加信号量 3、削减信号量 注...

网友评论

    本文标题:Swfit - Dispath信号量枷锁

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