Sobes.tech
Junior — Middle

Come viene effettuata la lettura dei dati da più thread o canali contemporaneamente?

sobes.tech AI

Risposta dell'AI

In Go, per leggere contemporaneamente da più canali si utilizza l'operatore select. Permette di attendere dati da più canali e reagire al primo disponibile.

Esempio:

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

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

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

In questo modo, select si blocca finché uno dei canali non ha dati, e poi esegue il caso corrispondente. Questo permette di gestire efficacemente più flussi di dati contemporaneamente.