Понимание последовательности с использованием каналов? - PullRequest
0 голосов
/ 09 февраля 2020

Я смотрю на параллельный доклад Роба Пайка для Go, и меня смущает этот пример Restoring Sequencing (https://www.youtube.com/watch?v=f6kdp27TYZs&feature=youtu.be&t=617)

func boring(msg string) <-chan Message {
    c := make(chan Message)
    waitForIt := make(chan bool)

    go func() {
        for i := 0; ; i++ {
            c <- Message{fmt.Sprintf("%s: %d", msg, i), waitForIt}
            time.Sleep(time.Duration(rand.Intn(1e3)) * time.Millisecond)
            <-waitForIt
        }
    }()
    return c
}

Мой вопрос особенно это относится к <-waitForIt. Я запутался, как этот фрагмент структуры используется, чтобы вызвать синхронность. Итак, мы строим канал с логическими значениями и выполняем goroutine. Какую роль здесь играет <-waitForIt? Полная игровая площадка для этого примера: https://play.golang.org/p/R60AJWzr0t. Эта часть просто не для меня.

Что-то в том, что канал пуст, что там какой-то период принудительного ожидания?

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