Надежно ли последовательная запись в два отдельных канала? - PullRequest
0 голосов
/ 11 февраля 2019

Если у меня есть выборка по двум каналам:

for {
    select {
    case <-chan1:
        // do something
    case <-chan2:
        // do something else
    }
}

И в отдельной программе я последовательно пишу в эти каналы:

chan1 <- "blah"
chan2 <- true

Могу ли я видеть, что "сделай что-нибудь""выполнить до" сделать что-то еще "?

Я знаю, что выбор выбирается случайным образом, если у него есть два разблокированных канала, но я думал, что запись на первый канал может надежно" прервать "запись программы, если выборуже блокируется, подразумевая, что выбор будет выполняться на разблокированном первом канале перед второй записью.

1 Ответ

0 голосов
/ 11 февраля 2019

Да, вы можете положиться на это, если каналы не буферизованы.См. Модель памяти Go .

...