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

DrainWithTimeout: ждать с границей

Ждать вечно при зависшем воркере — тоже баг. Реализуйте drainWithTimeout(wg *sync.WaitGroup, timeout) bool: ждать wg через done-канал или таймаут.

GolangРешение
func drainWithTimeout(wg *sync.WaitGroup, timeout time.Duration) bool {
	done := make(chan struct{})
	go func() {
		wg.Wait()
		close(done)
	}()
	select {
	case <-done:
		return true
	case <-time.After(timeout):
		return false
	}
}

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

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

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