Sobes.tech
Назад к вопросам
Middle
6

В чем отличие буферизированного канала от небуферизированного?

Компании, где спрашивали
VKVK

Ответ от нейросети

sobes.tech AI

Буферизированный канал в Go имеет внутренний буфер фиксированного размера, который позволяет отправителю писать несколько значений в канал без немедленного ожидания получателя.

Небуферизированный канал не имеет буфера, поэтому отправитель блокируется до тех пор, пока получатель не прочитает значение.

Пример:

ch := make(chan int, 2) // буферизированный канал с размером 2
ch <- 1 // не блокируется
ch <- 2 // не блокируется

ch2 := make(chan int) // небуферизированный канал
ch2 <- 1 // блокируется, пока кто-то не прочитает

Таким образом, буферизированные каналы полезны для асинхронной передачи данных, а небуферизированные — для синхронизации между горутинами.