不是特定于语言的问题。什么可以是事件循环的有效实现?到目前为止,我只遇到过这样的事情:
while (true) {
handleEvents();
sleep(100);
}
我不认为这是最好的方法 - 如果睡眠持续时间太短,它将吃掉很多cpu,如果它太长,应用程序将会非常反应迟钝。
那么,有更好的方法吗?
由于
答案 0 :(得分:4)
最常见的模式是:
while (WaitForNextEvent()) {
HandleEvent();
}
WaitForNextEvent()
返回false
表示不再需要处理的事件,最重要的是,能够为下一个事件执行阻塞等待。< / p>
例如,事件源可能是文件,套接字,线程的消息队列或某种类型的waitable object。在这种情况下,您可以保证HandleEvent()
仅在事件准备就绪时运行,并在事件准备就绪后很快触发。