❓ Зачем нужен канал с размером 1Канал с размером буфера 1 — это своего рода «промежуточный» вариант между небуферизованным и традиционно буферизованным каналом. Он позволяет одному элементу находиться в канале
без блокировки отправителя, то есть:
Если буфер пуст, то отправитель записывает значение в буфер и
сразу продолжает работу, не блокируясь. Это даёт
асинхронность, в отличие от небуферизованного канала, где send блокирует до приёма значения.
Если буфер заполнен этим одним элементом, дальнейшая отправка
заблокируется до тех пор, пока получатель не прочитает элемент из канала, тем самым освободив буфер.
Получатель, если буфер пуст, будет
блокироваться, ожидая новый элемент, как и в любом буферизованном канале.
Это часто используется для случаев, когда нужен небольшой буфер для
минимизации блокировок, но при этом важна почти
синхронная коммуникация без накопления большого количества элементов и связанных с этим задержек.
🐸 Библиотека Go для собеса