Junior — Middle
Барномаи чӣ гуна рафтор мекунад, вақте ки кӯшиш мекунад маълумотро ба канал, ки унсур надорад ва буфергузорӣ мекунад, фиристад?
sobes.tech AI
Ҷавоб аз AI
В Go канал с буфером позволяет отправлять данные без блокировки, пока буфер не заполнен. Если канал буферизирован и в нем нет элементов (то есть он пуст), попытка отправить данные в этот канал не блокируется, потому что буфер имеет свободное место.
То есть, при отправке в буферизированный канал:
- Если буфер не заполнен, отправка происходит сразу, программа продолжает работу.
- Если буфер заполнен, отправляющая горутина блокируется до освобождения места.
Пример:
ch := make(chan int, 2) // буфер на 2 элемента
ch <- 1 // отправка не блокируется
ch <- 2 // отправка не блокируется
// ch <- 3 // блокируется, т.к. буфер заполнен