Sobes.tech
Junior — Middle

Πώς πραγματοποιείται η ανάγνωση δεδομένων από πολλαπλά νήματα ή κανάλια ταυτόχρονα;

sobes.tech AI

Απάντηση από AI

Στη γλώσσα Go, για ταυτόχρονη ανάγνωση από πολλά κανάλια, χρησιμοποιείται ο τελεστής select. Επιτρέπει την αναμονή για δεδομένα από πολλά κανάλια και την αντίδραση στο πρώτο διαθέσιμο.

Παράδειγμα:

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

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

select {
case val := <-ch1:
    fmt.Println("Λήψη από ch1:", val)
case val := <-ch2:
    fmt.Println("Λήψη από ch2:", val)
}

Έτσι, το select μπλοκάρει μέχρι να υπάρχουν δεδομένα σε ένα από τα κανάλια και στη συνέχεια εκτελεί την αντίστοιχη περίπτωση. Αυτό επιτρέπει την αποτελεσματική διαχείριση πολλαπλών ροών δεδομένων ταυτόχρονα.