Junior — Middle
Кога точно ще настъпи блокирането при използване на канал с размер 100 елемента?
sobes.tech AI
Отговор от AI
В Go, канал с размер на буфера 100 елемента означава, че в него може да се изпратят до 100 стойности без блокиране на изпращача.
Блокирането ще се случи в момента, когато буферът на канала вече съдържа 100 елемента и горутината, която изпраща, се опита да изпрати 101-ия елемент. Тъй като буферът е пълен, изпращането ще бъде блокирано, докато някой не прочете поне един елемент от канала.
Пример:
ch := make(chan int, 100)
// Попълваме канала
for i := 0; i < 100; i++ {
ch <- i // не се блокира
}
// Следващото изпращане ще бъде блокирано, докато не бъде прочетен елемент
ch <- 101 // блокира
Така, блокирането се случва при опит да се изпрати елемент в напълно запълнен буфер на канала.