Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Java (https://forum.zone-game.info/forumdisplay.php?f=126)
-   -   SelectorThread обсуждение... (https://forum.zone-game.info/showthread.php?t=19727)

ALF. 01.05.2012 14:20

SelectorThread обсуждение...
 
Ребят, недавно, при написании своего ВебСервера, разбирал этот SelectorThread, и наткнулся на 1 интересную вещь...

Зачем в основном потоке обработки ключей\событий (SelectionKey.OP_CONNECT и т д) после выбора ключа и т д, в нормальном состоянии стоит СЛИП?

Ладно при исключении...
Но зачем в нормальном потоке делать слип?
PHP код:

                try
                {
                    
Thread.sleep(_sc.SLEEP_TIME);
                }
                catch(
InterruptedException ie)
                {

                }
            }
            catch(
IOException e)
            {
                                  
ТРА ТАТАтут тоже слипно ничего против этого слипа я не имею)
            } 

Просто не знаю, и хочу услышать Ваш совет...
В своём веб-сервере я снес его нах, и получил в 2-3 раза лучший результат в быстродействии, по тестам ApachBench...
Как насчет живого сервера?
Стоит ли убирать?
И вообще зачем он там....?
Что может случится если убрать этот слип....

G1ta0 01.05.2012 14:31

Re: SelectorThread обсуждение...
 
Профайлер бы запустил и посмотрел сколько selectNow() генерит мусора и нагрузку на CPU этого потока, если убран sleep.

sleep имеет смысл убирать если ты собрался переписывать логику выборки ключей из селектора, почитал бы по java nio, чтоль, в двух словах не объяснить. еще лучше, читать и смотреть реализации на примере xnio и netty.

VISTALL 01.05.2012 14:54

Re: SelectorThread обсуждение...
 
Если б Runnable.run() вызывался б по мере поступления ключей - но да б убрать , а там там Цыкл - а сам селектор не дает сильную нагрузку (на вызов) - итог цыкл грузит 100% КПУ

ALF. 01.05.2012 15:39

Re: SelectorThread обсуждение...
 
Цитата:

Сообщение от VISTALL (Сообщение 184016)
Если б Runnable.run() вызывался б по мере поступления ключей - но да б убрать , а там там Цыкл - а сам селектор не дает сильную нагрузку (на вызов) - итог цыкл грузит 100% КПУ

Благодарю!

Хлорка 02.05.2012 20:10

Re: SelectorThread обсуждение...
 
Да, пустой цикл в то-яме-то-канаве грузить ЦэПэ в сотню.


Текущее время: 09:15. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot