2
不是一個真正的特定語言的問題。什麼可能是一個有效的事件循環實現?到目前爲止,我只遇到過這樣的事情:
while (true) {
handleEvents();
sleep(100);
}
,我不認爲這是最好的辦法 - 如果睡眠時間過短,它會吃大量的CPU,如果它的時間太長,應用程序將非常沒有響應。
那麼,有沒有更好的方法?
感謝
不是一個真正的特定語言的問題。什麼可能是一個有效的事件循環實現?到目前爲止,我只遇到過這樣的事情:
while (true) {
handleEvents();
sleep(100);
}
,我不認爲這是最好的辦法 - 如果睡眠時間過短,它會吃大量的CPU,如果它的時間太長,應用程序將非常沒有響應。
那麼,有沒有更好的方法?
感謝
最常見的模式是:
while (WaitForNextEvent()) {
HandleEvent();
}
隨着WaitForNextEvent()
返回false
表示有沒有更多的事件來處理,而最重要的是,能夠執行阻塞等待爲下一個事件。
例如,事件源可能是文件,套接字,線程的消息隊列或某種其他的waitable object。在這種情況下,您可以保證HandleEvent()
只在事件準備就緒時運行,並在事件準備就緒後立即觸發。
謝謝,我GOOGLE了一些關於epoll,select,libevent和類似的東西,似乎他們做我想做的事:) – Justinas