SelectorThread обсуждение...
Ребят, недавно, при написании своего ВебСервера, разбирал этот SelectorThread, и наткнулся на 1 интересную вещь...
Зачем в основном потоке обработки ключей\событий (SelectionKey.OP_CONNECT и т д) после выбора ключа и т д, в нормальном состоянии стоит СЛИП? Ладно при исключении... Но зачем в нормальном потоке делать слип? PHP код:
В своём веб-сервере я снес его нах, и получил в 2-3 раза лучший результат в быстродействии, по тестам ApachBench... Как насчет живого сервера? Стоит ли убирать? И вообще зачем он там....? Что может случится если убрать этот слип.... |
Re: SelectorThread обсуждение...
Профайлер бы запустил и посмотрел сколько selectNow() генерит мусора и нагрузку на CPU этого потока, если убран sleep.
sleep имеет смысл убирать если ты собрался переписывать логику выборки ключей из селектора, почитал бы по java nio, чтоль, в двух словах не объяснить. еще лучше, читать и смотреть реализации на примере xnio и netty. |
Re: SelectorThread обсуждение...
Если б Runnable.run() вызывался б по мере поступления ключей - но да б убрать , а там там Цыкл - а сам селектор не дает сильную нагрузку (на вызов) - итог цыкл грузит 100% КПУ
|
Re: SelectorThread обсуждение...
Цитата:
|
Re: SelectorThread обсуждение...
Да, пустой цикл в то-яме-то-канаве грузить ЦэПэ в сотню.
|
Текущее время: 09:15. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot