gpt4 book ai didi

go - 从多个 goroutine 添加到 WaitGroup 是否安全?

转载 作者:IT王子 更新时间:2023-10-29 02:31:09 24 4
gpt4 key购买 nike

如果我有多个 go 例程同时添加和调用 WaitGroup 完成。从并发的角度来看,这安全吗?我见过的大多数 WaitGroup 示例都将添加添加到调用/创建其他例程的单个 go-routine 中。

最佳答案

从多个例程中调用Done 是安全的,并且根据the documentation 推荐使用WaitGroup .从生成更多例程的 goroutine 调用 Add 的原因不是因为 Add 不是线程安全的,而是因为这样的代码可能:

for ... {
go func() {
wg.Add(1)
defer wg.Done()
...
}()
}
wg.Wait()

可能会在执行任何对 Add 的调用之前到达 wg.Wait(),此时计数器仍为零,从而无法达到目的。并发代码的执行顺序是不确定的。

关于go - 从多个 goroutine 添加到 WaitGroup 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53769216/

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