DispatchGroup是否永远等待?



我想知道下面的场景。

在函数中有一个DispatchGroup。现在我在后台线程上进入组并调用wait()

func test() {
let group = DispatchGroup()

DispatchQueue.global().async {
group.enter()
group.wait()
}
}

我的问题是该组是否会永远等待或在主线程离开函数后获得释放?

我不确定是否有任何引用或捕获。我将非常感谢你的解释,这个话题让我有点困惑。

提前感谢!

是的,它将永远等待。

group被捕获,所以它不会被释放。很明显,你最终会锁定那个特定的工作线程。由于工作线程非常有限,这比DispatchGroup消耗的内存量更令人担忧。

如果你想让它超时,使用wait(timeout:)

最新更新