The invention provides a timer implementation method and device, which defines a cyclic time stepper in advance with absolute time of system startup, initializes the cyclic time stepper, allocates corresponding index positions for each timing node, and stores the timing node, which includes timer identification and timing. The invention realizes the insertion and deletion of timing nodes by using the cyclic time stepper, and uses the current system time to judge the lost time by active polling of user threads. Inter-calibration simplifies the node book that needs to be compared and improves the efficiency of timeout determination. At the same time, it confirms the next timeout according to the timeout execution time, thus avoiding the image of timeout execution time, ensuring that the fixed timeout time is invoked each time without the cumulative effect of timeout.
【技术实现步骤摘要】
一种定时器的实现方法及装置
本专利技术涉及定时器
,更具体的,涉及一种定时器的实现方法及装置。
技术介绍
人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。定时器作为软件开发中一种常见且必须的技术,定时器是一系列函数的集合体,通过使用其提供的方法能够使软件在固定的时间内完成指定的功能,其目的在于使软件在固定的时间内自动执行某种操作或任务。通常的,高精度的定时器借用硬件定时器提供中断的方式实现的,这也是软件系统精度最高的基准定时器。在实际的计算机的C语言程序中,一个模块执行多个操作是比较常见的,但是,如果多个操作同时进行,会出现程序效率低下、计算机CPU(CentralProcessingUnit,中央处理单元)占用率过高等情况,这时就需要对所有操作的执行顺序作合理的安排,因此,就涉及到定时器的使用。在定时器使用过程中,现有技术中的定时器需要先创建定时器结点,定时器结点包含超时时间、超时回调函数和其它信息,然后将创建的定时器结点加入到定时器管理器链表中,由定时器管理器中的线程进 ...
【技术保护点】
1.一种定时器的实现方法,其特征在于,预先以系统启动的绝对时间定义循环时刻步进器,初始化所述循环时刻步进器,为每个定时结点分配对应的索引位置,用于存储所述定时结点,所述定时结点包括定时器标识和定时时长,并在所述循环时刻步进器的索引链表中注册所述定时结点的事件以及所述事件对应的调回函数,该方法包括:根据所述绝对时间和对应的索引值确定待插入定时结点插入所述循环时刻步进器的索引位置;根据所述索引位置将所述待插入定时结点插入到所述循环时刻步进器,根据所述定时器标识从所述索引链表中查询对应的事件,并执行所述事件对应的调回函数;对所述循环时刻步进器进行单线程轮询检测超时的定时结点,将已 ...
【技术特征摘要】
1.一种定时器的实现方法,其特征在于,预先以系统启动的绝对时间定义循环时刻步进器,初始化所述循环时刻步进器,为每个定时结点分配对应的索引位置,用于存储所述定时结点,所述定时结点包括定时器标识和定时时长,并在所述循环时刻步进器的索引链表中注册所述定时结点的事件以及所述事件对应的调回函数,该方法包括:根据所述绝对时间和对应的索引值确定待插入定时结点插入所述循环时刻步进器的索引位置;根据所述索引位置将所述待插入定时结点插入到所述循环时刻步进器,根据所述定时器标识从所述索引链表中查询对应的事件,并执行所述事件对应的调回函数;对所述循环时刻步进器进行单线程轮询检测超时的定时结点,将已超时的结果通过链表的方式反馈,并确定超时执行时间为下一次的定时时间。2.根据权利要求1所述的方法,其特征在于,所述根据所述绝对时间和对应的索引值确定待插入定时结点插入所述循环时刻步进器的索引位置的步骤,包括:根据所述绝对时间和对应的索引值计算插入待插入定时结点时的时间偏移值;根据预设步进的时间刻度值和所述时间偏移值确定所述待插入定时结点的步进总数;根据所述步进总数、所述索引值、步进最大值以及每一轮步进的数量最大值确定所述待插入定时结点的步进索引值和步进循环轮数;根据所述步进索引值和所述步进循环轮数确定所述待插入定时结点的索引位置。3.根据权利要求1所述的方法,其特征在于,所述对所述循环时刻步进器进行单线程轮询检测超时的定时结点,将已超时的结果通过链表的方式反馈,并确定超时执行时间为下一次的定时时间的步骤,包括:计算待轮询定时结点的检测时间与所述绝对时间的时间差值;根据所述时间差值和所述每个步进的时间刻度值计算所述待轮询定时结点的步进值;当所述待轮询定时结点的步进值大于零时,获取所述待轮询定时结点的当前索引值;判断经过的刻度数值内是否存在超时的定时结点;若是,则标注对应的定时结点为超时,并输出;若否,则对所述待轮询定时结点的索引值和步进值进行更新。4.根据权利要求1所述的方法,其特征在于,还包括:根据传入参数的定时结点的时刻步进器标识获取所述待删除定时结点的索引值;根据所述索引值确定所述待删除定时结点的链表...
【专利技术属性】
技术研发人员:徐佳宏,陈华兵,
申请(专利权)人:深圳市茁壮网络股份有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。