3

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

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

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

我认为这不是最好的方法——如果睡眠时间太短,它会消耗大量的 CPU,如果太长,应用程序将非常无响应。

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

谢谢

4

1 回答 1

5

最常见的模式是:

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

WaitForNextEvent()返回false表示没有更多事件要处理,最重要的是,能够执行阻塞等待下一个事件。

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

于 2011-07-09T10:29:53.443 回答