美文网首页
swift 使用NSCondition自定义实现Dispatch

swift 使用NSCondition自定义实现Dispatch

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

材料

  1. NSCondition 条件锁
struct ZHSemaphore {
    var value: Int
    var wakeups: Int = 0
    let cond = NSCondition()
    init(value: Int) {
        self.value = value
    }
}
extension ZHSemaphore {
    mutating func wait() {
        cond.lock()
        value -= 1
        if value < 0 {
            repeat {
                cond.wait()
                debugPrint("iam wake up")
            } while wakeups < 1
            wakeups -= 1
        }
                
        cond.unlock()
    }
    mutating func signal() {
        cond.lock()
        value += 1
        if value <= 0 {
            wakeups += 1
            cond.signal()
        }
        cond.unlock()
    }
}

相关文章

网友评论

      本文标题:swift 使用NSCondition自定义实现Dispatch

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