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