Sobes.tech
Junior — Middle

Jak jednocześnie odczytywane są dane z wielu wątków lub kanałów?

sobes.tech AI

Odpowiedź od AI

W języku Go do jednoczesnego odczytu z wielu kanałów używa się operatora select. Pozwala on czekać na dane z kilku kanałów i reagować na pierwszy dostępny.

Przykład:

ch1 := make(chan int)
ch2 := make(chan int)

go func() { ch1 <- 1 }()
go func() { ch2 <- 2 }()

select {
case val := <-ch1:
    fmt.Println("Odebrano z ch1:", val)
case val := <-ch2:
    fmt.Println("Odebrano z ch2:", val)
}

W ten sposób select blokuje się, dopóki nie pojawią się dane w jednym z kanałów, a następnie wykonuje odpowiedni case. Pozwala to efektywnie obsługiwać wiele strumieni danych jednocześnie.