一个有效的事件循环实现?

时间:2011-07-09 10:14:55

标签: events event-loop

  

可能重复:
  How would you implement a basic event-loop?

不是特定于语言的问题。什么可以是事件循环的有效实现?到目前为止,我只遇到过这样的事情:

while (true) {
    handleEvents();
    sleep(100);
}

我不认为这是最好的方法 - 如果睡眠持续时间太短,它将吃掉很多cpu,如果它太长,应用程序将会非常反应迟钝。

那么,有更好的方法吗?

由于

1 个答案:

答案 0 :(得分:4)

最常见的模式是:

while (WaitForNextEvent()) {
    HandleEvent();
}

WaitForNextEvent()返回false表示不再需要处理的事件,最重要的是,能够为下一个事件执行阻塞等待。< / p>

例如,事件源可能是文件,套接字,线程的消息队列或某种类型的waitable object。在这种情况下,您可以保证HandleEvent()仅在事件准备就绪时运行,并在事件准备就绪后很快触发。