次の例を考える: 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 ルーチンからチャネルへの書き込みが安全ではないという私の仮定は正しいですか?
これを安全に行うための一般的/慣用的な方法はありますか? データを生成するルーチンごとに個別のチャネルを作成できることは知っていますが、それが最もクリーンなソリューションなのか、それとも他の方法があるのか 疑問に思っていました.