时间驱动事件体系结构 [英] Time driven events architecture
本文介绍了时间驱动事件体系结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在研究时间驱动事件,但我似乎想不出在不经常使用过多CPU的情况下如何做到这一点。
array events;
events[1] = [id:1,time:1440589943,event:happend];
While(running)
{
loop over events
if(currentTime >= eventTime)
fireEvent()
}
这似乎是我能想到的最基本的事件处理程序,但我认为它会不断地消耗大量CPU,而不会真正做任何事情。
因此,问题基本上是:其他任何语言中的时间驱动事件如何处理时间驱动事件?他们会不断地检查一个人是否准备好被解雇吗?他们使用聪明的日程安排机制吗?提前谢谢。
推荐答案
处理调度机制的常见方法是将时间事件放置在通常实现为heap的priority queue上。这可以让您知道下一个事件何时到来,并在适当的时间内休眠。这样,您就不会一直寻找下一个事件,处理器可以执行其他有意义的工作,直到控制权传回以处理下一个预定的事件。
只要注册了新事件,它就会被推入优先级队列。优先级队列负责维护事件的顺序,并可以存储重复事件的任何重复调度信息。通过这种方式,可以处理事件,然后根据事件的调度行为在将来将其添加回队列。
典型Unix/Linux系统上的cron设计遵循这一原则。cron上的维基百科文章包含对其实现的简短概述。
这篇关于时间驱动事件体系结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文