Ответ
Канал с буфером (размерностью 100) блокируется в двух случаях:
- При отправке (оператор
<-) – если буфер заполнен (уже 100 элементов). - При чтении (оператор
<-) – если буфер пуст.
Пример:
ch := make(chan int, 100) // буфер на 100 элементов
// Блокировка при отправке (когда буфер заполнен)
for i := 0; i < 101; i++ {
ch <- i // 101-я отправка заблокируется
}
// Блокировка при чтении (когда буфер пуст)
for i := 0; i < 101; i++ {
<-ch // 101-е чтение заблокируется
}