events - 高效的事件循环实现?

标签 events event-loop

Possible Duplicate:
How would you implement a basic event-loop?

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

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

我认为这不是最好的方法 - 如果 sleep 持续时间太短,它会消耗大量 cpu,如果 sleep 时间太长,应用程序将非常无响应。

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

谢谢

最佳答案

最常见的模式是:

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

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

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

关于events - 高效的事件循环实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6634131/

相关文章:

jQuery 将鼠标悬停在子元素上会产生奇怪的效果

c# - Active Directory 中的过滤器更改通知 : Create, 删除、取消删除

asp.net - 在 ASP .NET 页面生命周期中何时触发 DataBinding 事件?

javascript - Node 服务器异步调用后端服务

javascript - 操作系统如何将事件与 dom 对象联系起来?

javascript - 将回调直接排队到事件队列中

c# - lambda 事件处理程序会导致什么样的内存泄漏?

java - 自动关闭 Java FX 应用程序可能处于窗口 sleep 模式

javascript - 在事件循环中为 nodejs 任务分配优先级

javascript - 防止 NodeJS 退出事件循环