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