Отправляя данные на два канала, второй канал может сначала получить данные первым - PullRequest
0 голосов
/ 27 мая 2018
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 первым.Почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...