gpt4 book ai didi

go - 从多个 go 例程中汇集数据的线程安全方法

转载 作者:IT老高 更新时间:2023-10-28 13:04:29 28 4
gpt4 key购买 nike

给出以下示例:http://play.golang.org/p/owvJ8Oi77S

func produce(dataChannel chan int) {
for i := 0; i < 10; i++ {
dataChannel <- i
}
}

func main() {
dataChannel := make(chan int)

go produce(dataChannel)
go produce(dataChannel)
go produce(dataChannel)

for i := 0; i < 30; i++ {
data := <-dataChannel
fmt.Printf("%v ", data)
}
}

我认为从多个 go 例程写入 channel 不安全的假设是否正确?

是否有一种通用/惯用的方法可以安全地执行此操作?我知道您可以为每个生成数据的例程创建一个单独的 channel ,我只是想知道这是否是最干净的解决方案,或者是否还有其他替代方案。

最佳答案

channel 是完全线程安全的。它们是 goroutine 之间通信的官方方式。我认为您的代码没有任何问题。这就是围棋的美妙之处。

关于go - 从多个 go 例程中汇集数据的线程安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13690734/

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