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