AcquireWithTimeout: семафор с таймаутом
Если разрешение не освободилось — сдаться, а не ждать вечно. Реализуйте acquireWithTimeout(sem chan struct{}, timeout) bool: select по отправке в sem или time.After.
Показать решение
GolangРешение
func acquireWithTimeout(sem chan struct{}, timeout time.Duration) bool {
select {
case sem <- struct{}{}:
return true
case <-time.After(timeout):
return false
}
}Записаться на разбор
10 000 ₽ · 60 минут · онлайн