可能重复:
你将如何实现一个基本的事件循环?
不是一个特定于语言的问题。什么是事件循环的有效实现?到目前为止,我只遇到过这样的事情:
while (true) {
handleEvents();
sleep(100);
}
我认为这不是最好的方法——如果睡眠时间太短,它会消耗大量的 CPU,如果太长,应用程序将非常无响应。
那么,有没有更好的方法呢?
谢谢
可能重复:
你将如何实现一个基本的事件循环?
不是一个特定于语言的问题。什么是事件循环的有效实现?到目前为止,我只遇到过这样的事情:
while (true) {
handleEvents();
sleep(100);
}
我认为这不是最好的方法——如果睡眠时间太短,它会消耗大量的 CPU,如果太长,应用程序将非常无响应。
那么,有没有更好的方法呢?
谢谢
最常见的模式是:
while (WaitForNextEvent()) {
HandleEvent();
}
WaitForNextEvent()
返回false
表示没有更多事件要处理,最重要的是,能够执行阻塞等待下一个事件。
例如,事件源可能是文件、套接字、线程的消息队列或其他某种可等待对象。在这种情况下,您可以保证HandleEvent()
仅在事件准备好时运行,并在事件准备好后不久触发。