给定以下示例: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 例程写入通道不安全的假设是否正确?
有没有一种常见/惯用的方法可以安全地做到这一点?我知道您可以为每个生成数据的例程创建一个单独的通道,我只是想知道这是否是最干净的解决方案,或者是否有其他替代方案。