Задать вопрос
@lazy_val

Зачем for {select} оборачивать в еще один select с time.Ticker?

Вот такой простой на виду код из prometheus/scrape:

for {
		select {
		case <-m.graceShut:
			return
		case <-ticker.C:
			select {
			case <-m.triggerReload:
				m.reload()
			case <-m.graceShut:
				return
			}
		}
	}

Вроде все понятно: ждем периодического сигнала от time.Ticker, после получения такого сигнала ждем сигнала на перезагрузку (triggerReload). Вопрос - а зачем тут вообще нужен Ticker? Почему просто не вложить в for один единственный select:
for {
		select {
		case <-m.triggerReload:
			m.reload()
		case <-m.graceShut:
			return
		}
	}


И в том и в другом случае код будет ждать сигнала. Только в первом сначала из time.Ticker, потом из triggerReload. А вот втором - сразу из triggerReload.
  • Вопрос задан
  • 119 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы