Junior — Middle
Τι συμβαίνει αν πραγματοποιηθεί εγγραφή σε ένα κανάλι που ο buffer είναι πλήρως γεμάτος;
sobes.tech AI
Απάντηση από AI
Στο Go, αν προσπαθείτε να γράψετε μια τιμή σε ένα κανάλι με buffer που είναι πλήρως γεμάτο, η λειτουργία εγγραφής θα μπλοκαριστεί μέχρι να ελευθερωθεί χώρος στο κανάλι (δηλαδή, μέχρι κάποιος να διαβάσει από το κανάλι). Αυτό διασφαλίζει τον συγχρονισμό μεταξύ των goroutines και αποτρέπει την απώλεια δεδομένων.
Παράδειγμα:
ch := make(chan int, 2) // buffer με 2 στοιχεία
ch <- 1
ch <- 2
// ch <- 3 // εδώ η εγγραφή θα μπλοκαριστεί μέχρι κάποιος να διαβάσει από το ch