Проверяет понимание каналов, синхронизации горутин и управления скоростью обработки данных.
Unbuffered channel сразу блокирует отправителя, пока получатель не готов принять данные, создавая естественный backpressure. Buffered channel позволяет отправителю работать быстрее, пока буфер не заполнится, но может скрывать проблемы с перегрузкой.
Backpressure — это механизм, при котором медленный потребитель замедляет производителя.
Unbuffered channel:
отправка блокируется, пока получатель не прочитает значение;
producer и consumer синхронизированы по скорости;
backpressure встроен по умолчанию.
Buffered channel:
отправка не блокируется, пока есть место в буфере;
producer может «убежать вперёд»;
при неправильном размере буфера легко получить рост памяти и задержки.
Buffered channel полезен, когда:
допускается кратковременный всплеск нагрузки;
обработка асинхронная;
важно снизить количество блокировок.
Но большой буфер ≠ решение проблем производительности. Он лишь откладывает момент перегрузки.
Вывод: unbuffered — строгий контроль нагрузки, buffered — гибкость, но требует аккуратного подбора размера.