2011-05-06 47 views
2

NioWorker.run調用SelectorUtil.select,它以500毫秒的超時時間進行選擇。每個netty工作者每秒醒來2次。爲什麼?

NioClientSocketPipelineSink.Boss.run調用選擇與500毫秒超時。

NioServerSocketPipelinkSink.Boss.run還呼叫select,並且超時時間爲1000 ms。

因此,即使網絡上沒有任何事情發生,每個工作人員每秒至少醒來一次。這是解決某些問題的解決方法嗎?我認爲,如果沒有任何事情發生,就不會喚醒事件驅動的程序(即通過無限超時調用「select」)。消息來源沒有解釋。

回答

0

如果你想關閉服務器?如果我們不使用超時,我們只醒來時,來自網絡的真實事件,這可能需要很多時間來關閉一個乾淨的方式(也許永遠不會) 。 這些超時是在大多數情況下可以接受的,我們沒有發出關機指令後,等待時間過長,並檢查事件循環不會花費太多的CPU資源。

+0

有關閉的Selector.wakeup和Selector.close。 – stepancheg 2011-05-26 10:06:17