Как реализовать semaphore на Go?

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

Простой вариант — буферизованный канал: sem := make(chan struct{}, N), acquire: sem <- struct{}{}, release: <-sem. Продвинутый — golang.org/x/sync/semaphore.Weighted: поддерживает разный вес, контекст с таймаутом. Внутри — мьютекс + список ожидающих. Semaphore полезен для ограничения параллельных I/O операций (коннекты к БД, HTTP запросы).

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

Что такое heartbeat для websocket?