DispatchGroup 会永远等待吗?
Does DispatchGroup wait forever?
我想知道以下情况。
我在一个函数中有一个 DispatchGroup
。现在我在后台线程上进入群组并调用 wait()
.
func test() {
let group = DispatchGroup()
DispatchQueue.global().async {
group.enter()
group.wait()
}
}
我的问题是在主线程离开函数后,该组是否会永远等待或被释放?
我不确定是否有任何引用或捕获。我会非常感谢一些解释,这个话题让我有点困惑。
提前致谢!
是的,它会永远等待。
group
被捕获,所以不会被释放。而且,很明显,您最终会锁定那个特定的工作线程。由于工作线程非常有限,这比 DispatchGroup
.
消耗的内存量更令人担忧
如果你想让它超时,使用wait(timeout:)
。
我想知道以下情况。
我在一个函数中有一个 DispatchGroup
。现在我在后台线程上进入群组并调用 wait()
.
func test() {
let group = DispatchGroup()
DispatchQueue.global().async {
group.enter()
group.wait()
}
}
我的问题是在主线程离开函数后,该组是否会永远等待或被释放?
我不确定是否有任何引用或捕获。我会非常感谢一些解释,这个话题让我有点困惑。
提前致谢!
是的,它会永远等待。
group
被捕获,所以不会被释放。而且,很明显,您最终会锁定那个特定的工作线程。由于工作线程非常有限,这比 DispatchGroup
.
如果你想让它超时,使用wait(timeout:)
。