Sobes.tech
Junior — Middle

Wie erfolgt das Lesen von Daten aus mehreren Threads oder Kanälen gleichzeitig?

sobes.tech KI

Antwort von AI

In Go wird der Operator select verwendet, um gleichzeitig aus mehreren Kanälen zu lesen. Er ermöglicht es, auf Daten aus mehreren Kanälen zu warten und auf den ersten verfügbaren zu reagieren.

Beispiel:

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

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

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

Auf diese Weise blockiert select, bis Daten in einem der Kanäle vorhanden sind, und führt dann den entsprechenden Fall aus. Dies ermöglicht eine effiziente gleichzeitige Verarbeitung mehrerer Datenströme.