linux定时器的实现方法
来源:互联网 发布:玉溪餐饮软件yxqlkj 编辑:程序博客网 时间:2024/04/30 20:07
Linux提供定时器机制,可以指定在未来的某个时刻发生某个事件,定时器的结构如下:
-------------------------------
struct timer_list {
struct list_head list;
unsigned long expires;
unsigned long data;
void (*function)(unsigned long);
};
--------------------------------
list 实现的时候使用的,和定时器功能无关
expires 是定时器定时的滴答数(当前的滴答数为 jiffies )
function 到那个时刻内核调用的函数
data 由于可能多个定时器调用一个函数,为了使得这个函数能够区分不同的定时器,
通过在结构中 data 来标识这个定时器,并且通过调用
function( data )
使得 function 能区分它们,也就是 data 起到 ID 的作用。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如何使用
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
将定时器加到定时器队列中
void add_timer(struct timer_list *timer)
修改定时器的到期时间
int mod_timer(struct timer_list *timer, unsigned long expires)
将定时器删除(以后这个定时器将不再起作用)
int del_timer(struct timer_list * timer)
-------------------------------
struct timer_list {
struct list_head list;
unsigned long expires;
unsigned long data;
void (*function)(unsigned long);
};
--------------------------------
list 实现的时候使用的,和定时器功能无关
expires 是定时器定时的滴答数(当前的滴答数为 jiffies )
function 到那个时刻内核调用的函数
data 由于可能多个定时器调用一个函数,为了使得这个函数能够区分不同的定时器,
通过在结构中 data 来标识这个定时器,并且通过调用
function( data )
使得 function 能区分它们,也就是 data 起到 ID 的作用。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如何使用
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
将定时器加到定时器队列中
void add_timer(struct timer_list *timer)
修改定时器的到期时间
int mod_timer(struct timer_list *timer, unsigned long expires)
将定时器删除(以后这个定时器将不再起作用)
int del_timer(struct timer_list * timer)
如果不要求很精确的话,用 alarm() 和 signal() 就够了
代码:
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void sigalrm_fn(int sig)
{
printf("alarm!\n");alarm(2);return;
}
int main(void)
{
signal(SIGALRM,signalrm_fn);alarm(2);while(1)pause();
}
用select()函数可以实现定时,而且可以将时间精确到毫秒级
- linux定时器的实现方法
- linux定时器的实现方法
- linux定时器的实现方法
- linux定时器的实现方法
- Linux定时器的实现
- Linux定时器的实现
- linux定时器的实现
- Linux下实现定时器Timer的几种方法
- Linux下实现定时器Timer的几种方法
- Linux下实现定时器Timer的几种方法
- Android实现定时器的方法
- Android实现定时器的方法
- 实现定时器的几个方法
- LINUX 定时器的实现方式
- linux下定时器的实现
- linux内核定时器的实现
- linux内核定时器的实现
- linux 下定时器的实现
- 尝试自己从0开始搭建程序,重新发明是煅炼的好方式
- Silverlight技术调查(1)——Html向Silverlight传参
- WMI 远程连接问题解决方法
- 单元测试之moles
- eMule中的分布式哈希表技术: Kademlia
- linux定时器的实现方法
- 存储概念解析:NAS与SAN的区别
- linux上安装memcached小结
- Error: could not open `C:\Program Files\Java\jre6\lib\i386\jvm.cfg'
- robots文件的Crawl-delay是什么意思
- dereferencing pointer to incomplete type"
- oracle sql语句
- [JSF2 学习笔记之一] Eclipse3.6.2+JBosstools3.2+richfaces4.0+JSF2.0 +JBOSS AS 6 环境搭建
- Silverlight toolkit 中ListPicker控件的用法