gpt4 book ai didi

ios - Playground——DispatchQueue和DispatchSemaphore的关系

转载 作者:可可西里 更新时间:2023-11-01 00:58:01 25 4
gpt4 key购买 nike

我对 DispatchQueue 和 DispatchSemaphore 感到困惑。就像下面的例子:

let semaphore : DispatchSemaphore = DispatchSemaphore(value:1)
for i in 1...40 {
DispatchQueue.global().async{
semaphore.wait()
NSLog("......1-%d",i)
semaphore.signal()
}
}

我认为它应该打印 1...40,实际上它只打印了大约 25,结果如下:

2016-11-18 19:05:38.786 MyPlayground[7436:495171] ......1-1
2016-11-18 19:05:38.787 MyPlayground[7436:495175] ......1-2
......
2016-11-18 19:05:38.797 MyPlayground[7436:495258] ......1-23
2016-11-18 19:05:38.797 MyPlayground[7436:495244] ......1-24

这是什么原因?

最佳答案

因为您正在异步运行它,所以 Playground 在所有 40 次迭代完成之前完成。将这两行添加到代码的开头或结尾:

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true

关于ios - Playground——DispatchQueue和DispatchSemaphore的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40675645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com