Events 时间驱动事件体系结构

Events 时间驱动事件体系结构,events,scheduler,intervals,event-driven,event-driven-design,Events,Scheduler,Intervals,Event Driven,Event Driven Design,我正在研究时间驱动的事件,我似乎不知道如何在不经常使用过多CPU的情况下做到这一点 array events; events[1] = [id:1,time:1440589943,event:happend]; While(running) { loop over events if(currentTime >= eventTime) fireEvent() } 这似乎是我能想到的最基本的事件处理程序,但我认为它会持续消耗大量CPU,而不

我正在研究时间驱动的事件,我似乎不知道如何在不经常使用过多CPU的情况下做到这一点

array events;
events[1] = [id:1,time:1440589943,event:happend];
While(running)
{
    loop over events
        if(currentTime >= eventTime)
             fireEvent()
}
这似乎是我能想到的最基本的事件处理程序,但我认为它会持续消耗大量CPU,而不会真正做任何事情

所以问题基本上是:其他语言中的时间驱动事件是如何处理时间驱动事件的?他们是否经常检查一个人是否准备好被解雇?他们是否使用了聪明的调度机制


提前感谢。

处理调度机制的常用方法是将时间事件放置在通常作为实现的上。这可以让你知道下一个事件何时到来,并在适当的时间内睡眠。这样,您就不会一直在寻找下一个事件,处理器可以执行其他有意义的工作,直到将控制权传递回处理下一个计划的事件为止

只要注册了一个新事件,它就会被推送到优先级队列中。优先级队列负责维护事件的顺序,并可以存储重复事件的任何重复调度信息。通过这种方式,可以处理事件,然后根据其调度行为在将来将其添加回队列

典型unix/linux系统上的cron设计遵循这一原则。Wikipedia关于的文章简要概述了它的实现