iOSiOS 关键知识点

Swift DispatchSemaphore信号量

2019-03-18  本文已影响0人  Mr大喵喵

实际应用

在开发中我们需要等待某个网络回调完之后才执行后面的操作,根据啥给你们分析的过程,可以写出如下代码,达到这种效果。

let semaphore = DispatchSemaphore(value: 1) 初始化信号量为1
semaphore.wait() 信号量 -1
semaphore.signal() 信号量为+1
// 创建一个并发队列
 let concurrentQueue = DispatchQueue(label: "concurrentQueue", attributes: .concurrent)
//初始化信号量为1
let semaphore = DispatchSemaphore(value: 1)
// 异步操作加入第一个网络请求
      concurrentQueue.async() {
            semaphore.wait()
            self.boVM.requsetBoutique_list(1, {
                sleep(3)
                print("1-----------1")
                semaphore.signal()
            })
        }
        
        // 异步操作加入第二个网络请求

        concurrentQueue.async() {
            semaphore.wait()
            self.boVM.requsetBoutique_list(1, {
                print("2")
                semaphore.signal()
            })
        }
        
// 异步操作加入第三个网络请求

        concurrentQueue.async() {
            semaphore.wait()
            self.chVM.requestChildList(.Subscription, {
                print("3")
                semaphore.signal()
            })
        }
上一篇下一篇

猜你喜欢

热点阅读