Sobes.tech
Junior — Middle

Ako sa súčasne čítajú údaje z viacerých vlákien alebo kanálov?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa na súčasné čítanie z viacerých kanálov používa operátor select. Umožňuje čakať na dáta z viacerých kanálov a reagovať na prvý dostupný.

Príklad:

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

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

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

Týmto spôsobom sa select zablokuje, kým sa neobjavia dáta v jednom z kanálov, a potom vykoná príslušný prípad. To umožňuje efektívne spracovanie viacerých tokov dát súčasne.