Sobes.tech
Junior — Middle

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

sobes.tech AI

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

Η μεταφορά δεδομένων μέσω ενός μη buffer καναλιού στο Go γίνεται συγχρονισμένα: ο αποστολέας μπλοκάρεται μέχρι ο παραλήπτης να διαβάσει τα δεδομένα, και το αντίστροφο. Αυτό εξασφαλίζει άμεση συγχρονισμό μεταξύ των goroutines.

Παράδειγμα:

ch := make(chan int) // μη buffer κανάλι

// Αποστολέας
go func() {
    ch <- 42 // μπλοκάρεται μέχρι ο παραλήπτης να διαβάσει
}()

// Παραλήπτης
val := <-ch // μπλοκάρεται μέχρι να εμφανιστεί μια τιμή
fmt.Println(val) // θα εμφανίσει 42

Έτσι, τα δεδομένα μεταδίδονται άμεσα, χωρίς ενδιάμεση αποθήκευση, διασφαλίζοντας συγχρονισμό μεταξύ αποστολέα και παραλήπτη.