DispatchGroup 会永远等待吗?

Does DispatchGroup wait forever?

我想知道以下情况。

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

func test() {
   let group = DispatchGroup()
   
   DispatchQueue.global().async {
      group.enter()
      group.wait()
   }
}

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

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

提前致谢!

是的,它会永远等待。

group被捕获,所以不会被释放。而且,很明显,您最终会锁定那个特定的工作线程。由于工作线程非常有限,这比 DispatchGroup.

消耗的内存量更令人担忧

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