package main
func m() {
c1 := make(chan int, 1)
c2 := make(chan int, 1)
go func() {
c1 <- 1
c2 <- 1
}()
select {
case <-c1:
case <-c2:
println("no way")
}
}
func main() {
for i := 0; i < 1000000; i++ {
m()
}
}
Есть два канала c1
, c2
.
Мы отправляем данные на c1
и c2
в порядке.И у нас есть select
для получения данных с этих двух каналов и возврата.
Вопрос в том, что мы сначала отправляем данные на c1
, а в большинстве случаев получаем сначала c1
.Но иногда мы получаем от c2
первым при отправке на c1
первым.Почему?