gpt4 book ai didi

go - 如何确保按 channel 生产和消费数据是安全的

转载 作者:行者123 更新时间:2023-12-01 22:11:20 24 4
gpt4 key购买 nike

我是golang的新手,这是我的目的,我想让2个例程与一个公共(public) channel 同时运行,消费者应该在 channel 创建后启动并始终获取数据直到 channel 关闭,我的代码模板如下:

var userChannel chan string
for index := 0; index < *clientNums; index++ {
wg.Add(1)
go run1()
go run2()
}
wg.Wait()

}

func run1() {
defer wg.Done()
// ...some logic
userChannel = make(chan string, *readUserNums)
for index := 0; index < *readUserNums; index++ {
//...some logic
userChannel <- userId
//...some logic

}
close(userChannel)
}
func run2() {
for sendId := range userChannel {
//...some logic
}
}
在我的代码中,如果 run2首先运行它会 panic ,因为尚未创建 channel 并且 channel 中没有数据。我怎样才能达到我的目的?谢谢你

最佳答案

首先创建 channel ,然后将其传递到您的 goroutines 中,而不是将其存储在全局中并动态创建它。

关于go - 如何确保按 channel 生产和消费数据是安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63499037/

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