发明名称 软件定时器的定时及控制方法
摘要 本发明的一种软件定时器的定时及控制方法,其涉及一种计算机和通信领域的定时器定时及控制方法,该方法采用多队列定时法,采用定义所需最大定时器数的定时器描述数组,作为用于存放空闲定时器的空闲队列,以及,各队列还设置有一指向当前子队列的循环指针,每次各队列只处理循环指针指向的子队列下的定时器,并且循环指针重新指向队列的子队列号0时,才继续处理后一队列。本发明方法中的定时器在各种负载下的平均性能提高40倍以上,达到了高性能、高效率、高均衡性、实现简单性、可伸缩性的效果,节省了通信系统的定时管理所需的CPU资源。
申请公布号 CN1556654A 申请公布日期 2004.12.22
申请号 CN200310117667.1 申请日期 2003.12.31
申请人 中兴通讯股份有限公司 发明人 王新余;董伟杰
分类号 H04Q3/545;H04Q3/64;H04M3/00 主分类号 H04Q3/545
代理机构 中原信达知识产权代理有限责任公司 代理人 张天舒
主权项 1、一种软件定时器的定时及控制方法,采用多队列定时法,包括以下步骤:a)定义所需最大定时器数的定时器描述数组,作为用于存放空闲定时器的空闲队列;b)根据定时器时长类型的字节长度L定义定时子队列的数目N=L×32,并把这N个子队列划分成M个队列,M为2的阶乘,即2、4、8...等,M不大于N,每个队列下包含子队列数目为N/M,各队列还设置有一指向当前子队列的循环指针,每次各队列只处理循环指针指向的子队列下的定时器,并且循环指针重新指向队列的子队列号0时,才继续处理后一队列,否则立刻返回;c)对定义的定时队列和子队列初始化,当前子队列的循环指针赋值为0;d)当上层应用程序需要设置新定时器时,设定新的定时器;e)在机器的定时周期到时,所述队列0的定时周期为T,该队列0中的循环指针指向下一子队列,并判断该子队列是否为空,如果不为空,则对子队列下的所有定时器所属进程发送超时消息;当该循环指针重新指向子队列0时,队列进阶,对定时周期为T×(N/M)的队列1进行处理,同样对该队列1中的当前子队列进行判断,如果定时器的所述队列0的子队列号为0,则向定时器所属进程发送超时消息,否则根据定时器的所述队列0的子队列号放入队列0相应子队列的末尾;f)当上层应用程序不再需要定时器时,从所在定时队列中把对应定时器移走,放入空闲队列中。
地址 518057广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦A座6层