显然,如果我处理不同的队列,我只能使用 DispatchSemaphore。但是如果我想在同一个队列(在本例中是主队列)上运行异步代码怎么办。
let s = DispatchSemaphore(value : 0)
DispatchQueue.main.async {
s.signal()
}
s.wait()
这个片段不起作用,因为异步代码也在等待,因为信号量阻塞了主队列。我可以用信号量做到这一点吗?还是我需要在不同的队列上运行异步代码?
附言。我知道我可以在这个片段中使用同步,而不是异步和信号量。但这只是重现异步调用的示例代码。