gpt4 book ai didi

go - WaitGroup计数器为负数,但是为什么

转载 作者:行者123 更新时间:2023-12-01 22:31:04 29 4
gpt4 key购买 nike

我正在尝试理解go例程,并使用了一些代码。
这真的让我感到奇怪。它打印两个或多个值,然后出现错误

紧急:同步:否WaitGroup计数器

func processTheInt(i int, wg sync.WaitGroup){
fmt.Println(i)
wg.Done()

}


func main(){
var waitGroup sync.WaitGroup

for {
theInt := rand.Intn(100)
waitGroup.Add(1)
go processTheInt(theInt, waitGroup)
}

}

有人可以解释为什么会这样吗?在执行go func processTheInt之前,我要增加计数器。该功能在打印后执行并减少。是因为打印花费的时间比启动该功能所需的时间更长?

最佳答案

您应该将指针传递给waitGroup变量

func processTheInt(i int, wg *sync.WaitGroup){
fmt.Println(i)
wg.Done()

}

func main(){
var waitGroup sync.WaitGroup

for {
theInt := rand.Intn(100)
waitGroup.Add(1)
go processTheInt(theInt, &waitGroup)
}

}

否则,它将在每次迭代时复制该结构。

Read this to know the difference

关于go - WaitGroup计数器为负数,但是为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61244341/

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