有效的事件循环实现?

Jus*_*nas 3 events event-loop

可能的重复:
您将如何实现基本的事件循环?

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

while (true) {
    handleEvents();
    sleep(100);
}
Run Code Online (Sandbox Code Playgroud)

我认为这不是最好的方法-如果睡眠时间太短,它将消耗大量CPU,如果睡眠时间太长,则该应用将无响应。

那么,有没有更好的方法?

谢谢

Fré*_*idi 5

最常见的模式是:

while (WaitForNextEvent()) {
    HandleEvent();
}
Run Code Online (Sandbox Code Playgroud)

通过WaitForNextEvent()返回false指示,不再有要处理的事件,最重要的是,能够执行阻塞等待下一个事件。

例如,事件源可能是文件,套接字,线程的消息队列或某种其他可等待对象。在这种情况下,您可以保证HandleEvent()仅在事件准备就绪时才运行,并且在事件准备就绪后不久就会触发。