• Задача
  • Решение
  • Обсуждение

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
	}
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки