Что такое buffered channel как семафор?

Middle
214 просмотров
AFK Offer AI

Buffered канал с размером N работает как семафор на N: отправка в канал — acquire (блокируется если буфер полный), чтение — release. sem := make(chan struct{}, 10) ограничит до 10 одновременных операций. Каждая горутина делает sem <- struct{}{} перед работой и <-sem после. Это проще чем sync.Semaphore из x/sync для простых случаев.

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

Что такое bounded context в микросервисах?