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