Буферизованные vs небуферизованные каналы?

Junior
1.4k просмотров
AFK Offer AI

Небуферизованный канал (make(chan int)) — синхронный: отправитель блокируется, пока получатель не прочитает. Буферизованный (make(chan int, 10)) — асинхронный до заполнения буфера.

ch1 := make(chan int)     // блокирует на send до receive
ch2 := make(chan int, 5)  // блокирует только когда буфер полон

Небуферизованные гарантируют синхронизацию — отправитель знает, что данные получены. Буферизованные дают развязку по времени — отправитель может уйти дальше. Используй небуферизованные для сигналов и синхронизации, буферизованные — для пулов задач и rate limiting.

Следующий вопрос

Как работает defer с несколькими вызовами?