Каждый работник нетто просыпается 2 раза в секунду. Зачем? - PullRequest
2 голосов
/ 07 мая 2011

NioWorker.run вызывает SelectorUtil.select, который выбирает с тайм-аутом 500 мс.

NioClientSocketPipelineSink.Boss.run вызывает select с таймаутом 500 мс.

NioServerSocketPipelinkSink.Boss.run также вызывает selectс таймаутом 1000 мс.

Таким образом, каждый рабочий просыпается, по крайней мере, один раз в секунду, даже если в сети ничего не происходит.Это обходной путь против какой-то проблемы?Хотя хорошая программа, управляемая событиями, не должна просыпаться, если ничего не произошло (т.е. вызывать «select» с бесконечным таймаутом).В источниках нет объяснений.

1 Ответ

0 голосов
/ 25 мая 2011

Что делать, если вы хотите выключить сервер ?, Если мы не используем тайм-аут, мы просыпаемся только тогда, когда из сети приходит реальное событие, может потребоваться много времени для чистого отключения (возможно, никогда).В большинстве случаев эти тайм-ауты приемлемы, нам не нужно ждать слишком долго после выдачи команды завершения работы, а проверка цикла событий не занимает много ресурсов ЦП.

...