快板:为什么要等待一个事件或直到60毫秒结束
Allegro: Why wait for an event or until 60 milliseconds is up?
在快板wiki上(http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial/Events)它显示了这个代码。
bool get_event = al_wait_for_event_until(event_queue, &ev, &timeout);
我知道代码的作用,但为什么要等待事件或直到60毫秒结束?为什么不只是其中之一?
如果你等待一个事件,那可能是永远的。
这个问题可以通过问一个简单的问题来回答:如果事件从未发生,会发生什么?你想让你的程序坐在那里等待不会发生的事情吗?
有些事件或多或少是有可能发生的;它们没有发生意味着坏事正在发生。没有得到v-sync事件意味着显示器不再存在。或者什么的。没有得到计时器事件意味着Allegro计时器系统坏了(或者有人将计时器设置为非常长的持续时间)。但有些事件可能根本不会发生。
超时是存在的,以防事件从未被触发。这样,你就可以检测到它(通过返回值)并采取措施
永远等到某个事件发生,有什么不好的?
因为程序需要响应。假设您正在使用Allegro游戏编程库制作游戏。
你真的希望你的游戏因为某些事件而停止2分钟吗?您是否希望您的显示器在图像上冻结5分钟,而用户不知道发生了什么?或者你想弹出一个对话框,说:"嘿,我在等什么。等一下。"然后显示一个动画等待光标。
永远等待从来都不是一个好主意。
相关文章:
- Android NDK传感器向事件队列报告奇怪的间隔
- 从文本文件中读取时钟时间和事件时间并进行处理
- WMI检测进程创建事件-c++
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 处理闪烁窗口事件
- C++Builder中的OnClick事件签名存在问题
- 跟踪滚动条上的鼠标事件
- 什么是事件表 (wxWidgets)?
- 如何在 MFCaptureEngine 中获取"Camera removed"事件
- 给定顺序中的事件处理
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 如何创建事件驱动的 SDL2 应用程序
- Windows 进程间同步类似事件?
- 如何从C++端挂接到 QML 项的 onClick 事件
- 如何通过多类"Union variable" (sfml) 使用轮询事件
- 如何在Qt 4.8中阻止/忽略/丢弃早于特定超时的用户输入事件
- C++ 信号和插槽不工作:插槽不响应事件
- 在虚幻引擎中触发C++ dll的事件
- 快板:为什么要等待一个事件或直到60毫秒结束