:= make(chan string)
go func() {
fmt.Println(1)
msg <- "Test 1"
fmt.Println(2)
fmt.Println(22)
// time.Sleep(time.Second)
fmt.Println(222)
msg <- "Test 2"
fmt.Println(3)
msg <- "Test 3"
}()
fmt.Println(<-msg)
fmt.Println(<-msg)
fmt.Println(<-msg)
}
Вывод:
1
2
22
222
Test 1
Test 2
3
Test 3
вы ещё сильнее удивитесь когда запустите всё это на машине с одним процессором - это просто повиснет
Эээ, нет. При записи в канал есть переключение контекста. Описанный мной флоу работает даже для GOMAXPROC равного единице (точнее он для него и работает) Ну и надо понимать, что он вообще для одноядерного процессора равен 3 по умолчанию
ну у меня были проблемы на одноядерной виртуалке в такой ситуации...
Обсуждают сегодня