美文网首页
swift semaphore信号量

swift semaphore信号量

作者: 松龄学编程 | 来源:发表于2020-07-17 16:05 被阅读0次
let queue = DispatchQueue(label: "com.sfit.demo")
        let sema = DispatchSemaphore(value: 1)
        
        queue.async {
            Thread.sleep(forTimeInterval: 0.4)
            print("task1 done")
            let sign = sema.signal()
            print("sign: \(sign)")
        }
        var result = sema.wait(timeout: .distantFuture)
        print(result)
        
        queue.async {
            
            Thread.sleep(forTimeInterval: 0.2)
            print("task2 done")
            let sign = sema.signal()
            print("sign: \(sign)")
        }
        result = sema.wait(timeout: .distantFuture)
        print(result)

信号量是可以用来阻塞当前线程,设置value不同,可以有多种使用场景。
1 value为0,阻塞当前线程,线程等待
2.value为1,当成锁来使用,串行执行
3.value大于1,限制线程生成数量

相关文章

网友评论

      本文标题:swift semaphore信号量

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