Sobes.tech
Junior — Middle

Τι συμβαίνει αν πραγματοποιηθεί εγγραφή σε ένα κανάλι που ο buffer είναι πλήρως γεμάτος;

sobes.tech AI

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

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

Παράδειγμα:

ch := make(chan int, 2) // buffer με 2 στοιχεία
ch <- 1
ch <- 2
// ch <- 3 // εδώ η εγγραφή θα μπλοκαριστεί μέχρι κάποιος να διαβάσει από το ch