更新 README.md

master
极简美 2019-05-12 09:42:35 +08:00
parent 78d1ac1ea6
commit 07764643ac
1 changed files with 8 additions and 8 deletions

View File

@ -2,7 +2,7 @@
#### 一、介绍 #### 一、介绍
一个Linux下的超级简洁的定时器*利用epoll机制和timerfd新特性实现的多重、多用、多个定时实现*。只需要使用TIMER_CREATE()接口创建一个定时器实体,即**可向其添加成千上万个定时任务,定时任务可达到纳秒级别的精度,且可在同一时间点添加不同的定时任务!**。 一个Linux下的超级简洁的定时器*利用epoll机制和timerfd新特性实现的多重、多用、多个定时任务实现*。只需要使用TIMER_CREATE()接口创建一个定时器实体,即**可向其添加成千上万个定时任务,定时任务可达到纳秒级别的精度,且可在同一时间点添加不同的定时任务!**。
#### 二、软件接口 #### 二、软件接口
@ -26,8 +26,8 @@ TIMER_ADD(name, itimespec, repeat, cb, data);
TIMER_DEL(name, timerfd); TIMER_DEL(name, timerfd);
``` ```
TIMER_ADD()用于向定时器实例name中添加一个定时,其参数描述如下: TIMER_ADD()用于向定时器实例name中添加一个定时任务,其参数描述如下:
- ittimespec是定时器的定时时间和循环事件,其结构体类型如下: - ittimespec是定时任务的定时时间和循环时间,其结构体类型如下:
``` ```
struct timespec { struct timespec {
time_t tv_sec; // seconds time_t tv_sec; // seconds
@ -39,15 +39,15 @@ struct itimerspec {
}; };
``` ```
其中it_value即是超时时间若想定义周期定时任务则设置it_interval成员若不想定义周期定时则需设置it_interval成员都为0。因此第一次超时和后面周期定时任务是可以使用不同时间的。 其中it_value即是超时时间(相对时间)若想定义周期定时任务则设置it_interval成员若不想定义周期定时任务则需设置it_interval成员都为0。因此第一次超时和后面周期定时任务是可以使用不同时间的。
- repeat是周期定时的重复次数,若设置为**-1代表永远重复0代表一次都不执行**因此repeat应至少为1或者使用-1 - repeat是周期定时任务的重复次数,若设置为**-1代表永远重复0代表一次都不执行**因此repeat应至少为1或者使用-1
- cb为定时任务超时回调函数其类型为void (*timer_callback_t)(void *data) - cb为定时任务超时回调函数其类型为void (*timer_callback_t)(void *data)
- data为定时任务回调函数的参数为void *类型,用户可指定为自己定义的结构体; - data为定时任务回调函数的参数为void *类型,用户可指定为自己定义的结构体;
TIMER_ADD()添加定时任务成功返回新定时任务的文件描述符,失败返回 < 0TIMER_DEL() TIMER_ADD()添加定时任务成功返回新定时任务的文件描述符,失败返回 < 0TIMER_DEL()
4. **查询和清空定时** 4. **查询和清空定时任务**
``` ```
TIMER_COUNT(name); TIMER_COUNT(name);
TIMER_CLEAR(name); TIMER_CLEAR(name);
@ -57,7 +57,7 @@ TIMER_COUNT(name)用于查询定时器实例name中现存的定时任务个数
#### 三、使用实例 #### 三、使用实例
下面是一个非常简单的使用示例:共创建了两个定时每个第一次超时都是3S后面每隔1S超时一次但第一个定时器频次为8第二个定时器频次为3当所有定时器都超时后,输入回车即可退出: 下面是一个非常简单的使用示例:共创建了两个定时任务每个第一次超时都是3S后面每隔1S超时一次但第一个定时任务频次为8第二个定时任务频次为3当所有定时任务都超时后,输入回车即可退出:
``` ```
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>