Это абсолютно нормальное поведение, поэтому я отвечаю на ваш вопрос
, поэтому я ожидаю, что планировщик заблокирует запись программы в канал до тех пор, пока другая программа не прочитает содержимое канала
Schedular может продолжать или не продолжать ту же самую процедуру после отправки значения по каналу, если не требуется дополнительная синхронизация.
Так, например, после того, как «msg 2» отправляется на ch
и читается в другая последовательность в следующей строке
ch <- "msg 2"
Программа может продолжить выполнение v += 1
и вызвать fmt.Println
до того, как другие программы вызовут ее.
Также вызывает fmt.Println
из разных программ требует синхронизации и, возможно, mutex
вызовов, что также может изменить порядок операторов печати.
Более того, в переменной v
происходит скачок данных.