APP下载

Linux下一种高性能定时器池的实现*

2012-08-13于鸿洋

电子技术应用 2012年12期
关键词:用户管理

许 健,于鸿洋

(电子科技大学 电子科学技术研究院,四川 成都 611731)

定时器(timer)是 Linux提供的一种定时服务的机制[1]。在使用定时器时,预先设置一个定时时间,并给定时时间到达时执行预先设定的任务。目前Linux系统本身提供了多种用户级定时器接口,其中精度较低的如Alarm函数,精度为秒级,能够满足一些定时精度低的应用场合。但由于同一进程中不能同时调用多个Alarm函数,因此应用场合有限。Setitimer克服不能重复使用的缺点,同时将精度提高到毫秒级,但是同一个进程中只能设置一个这种定时器。Timerfd是Linux为用户程序提供的另一个定时器接口,这个接口基于文件描述符,能够被用于select/poll的应用场景,其精度可以达到纳秒级,是用户空间高精度定时器的理想选择。本设计的定时器池基于时间轮原理,设定一个时间片大小作为时间间隔的基本单位,将时间轮分为固定时间片数,只需要一个Timerfd来管理该定时器池,设定超时时间间隔为时间片的大小,每次当超过一个时间片的时间时,系统将会通知定时器池的管理线程,管理线程做出相应的动作。综合以上优劣,本文提出一种定时器池的算法,用于管理大量定时器[2-3]。

1 设计原理以及工作流程

1.1 定时器池的结构

本定时器池选用Timerfd作为添加和删除定时器的接口,使用Linux提供的函数timerfd_settime来设定定时的间隔时间大小。本定时器池的时间间隔为一个时间片time_slot大小。设定之后,管理线程等待系统的信号通知,系统每隔一个时间片就给定时器池发送一个信号,当收到此信号时,管理线程轮询定时器池,查看池中是否有超时的定时器,若有则按用户需求执行相关动作。……

登录APP查看全文

猜你喜欢

用户管理
枣前期管理再好,后期管不好,前功尽弃
加强土木工程造价的控制与管理
如何加强土木工程造价的控制与管理
关注用户
关注用户
关注用户
“这下管理创新了!等7则
人本管理在我国国企中的应用
Camera360:拍出5亿用户
100万用户