时间驱动事件体系结构 [英] Time driven events architecture

查看:0
本文介绍了时间驱动事件体系结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

array events;
events[1] = [id:1,time:1440589943,event:happend];
While(running)
{
    loop over events
        if(currentTime >= eventTime)
             fireEvent()
}

这似乎是我能想到的最基本的事件处理程序,但我认为它会不断地消耗大量CPU,而不会真正做任何事情。

因此,问题基本上是:其他任何语言中的时间驱动事件如何处理时间驱动事件?他们会不断地检查一个人是否准备好被解雇吗?他们使用聪明的日程安排机制吗?

提前谢谢。

推荐答案

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

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

典型Unix/Linux系统上的cron设计遵循这一原则。cron上的维基百科文章包含对其实现的简短概述。

这篇关于时间驱动事件体系结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆