В следующем примере: 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)
}
}
Является ли мое предположение о том, что запись в канал из нескольких правил работы небезопасна?
Есть ли общий/идиоматический способ сделать это безопасно? Я знаю, что вы можете сделать отдельный канал для каждой подпрограммы, которая производит данные, мне просто интересно, было ли это самое чистое решение или были ли другие альтернативы.