Sobes.tech
Назад к вопросам
Senior
8

Как работает буферизованный канал в Go?

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

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

sobes.tech AI

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

Пример:

ch := make(chan int, 2) // канал с буфером на 2 элемента

ch <- 1 // не блокируется
ch <- 2 // не блокируется
// ch <- 3 // блокируется, пока кто-то не прочитает из канала

fmt.Println(<-ch) // выводит 1
fmt.Println(<-ch) // выводит 2

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