Как time.After и time.Tick работает в default-selection. go в тур go? - PullRequest
0 голосов
/ 11 апреля 2020
package main
import(
"fmt"
"time"
)
func main(){
tick := time.Tick(100 * time.Millisecond)
boom := time.After(500 * time.Millisecond)
for {
select{
case <-tick:
fmt.Println("tick")
case <-boom:
fmt.Println("BOOM!")
return
default:
fmt.Println("  .")
time.Sleep(50 * time.Millisecond)
}
}
}

Может кто-нибудь объяснить пошаговое выполнение кода? https://tour.golang.org/concurrency/6

1 Ответ

0 голосов
/ 11 апреля 2020

select может обрабатывать только 1 случай за раз, и он будет обрабатывать случаи один за другим ( Спасибо @Flimzy за исправление ).

tick.Tick () будет отправлять сигнал каждые 100 мельниц, а time.After () будет отправлять сигнал через 500 мельниц.

Это означает, что select будет реагировать на случай по умолчанию, когда не поступает сигнал от tick () или after () .

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