ev_timer结构体:
typedef struct ev_timer
{
int active; /* 是否已经激活 */
int pending; /* 是否事件易产生,需要执行回调 */
int priority; /* 事件优先级 */
void *data; /* rw */
void (*cb)(struct ev_loop *loop, struct ev_timer *w, int revents); /* 回调 */
ev_tstamp at; /* private */
ev_tstamp repeat; /* rw */
} ev_timer;
相关函数:
ev_timer_init(ev,cb,after,repeat);
参数说明:
ev:ev_timer结构
cb:超时回调函数
after:多少秒之后调用回调函数
repeat:第一次触发回调后每多少秒再次重复触发回调
ev_timer_start(EV_P_ ev_timer *w) ;
ev_timer_stop(EV_P_ ev_timer *w) ;
/* stops if active and no repeat, restarts if active and repeating, starts if inactive and repeating */
ev_timer_again(EV_P_ ev_timer *w) ; //可对timer进行重设
参数说明:
EV_P_: loop结构
w:ev_timer结构
一个简单的重复定时器:
#include <stdio.h>
#include <signal.h>
#include <string.h>
#include <sys/unistd.h>
#include "ev.h"
void timer_action(struct ev_loop *main_loop,ev_timer *time_w,int e)
{
puts("In Time action");
ev_timer_stop(main_loop,time_w);
}
int main(int argc,char **argv)
{
ev_timer timer_w;
struct ev_loop *main_loop = ev_default_loop(0);
ev_init(&timer_w,timer_action);
ev_timer_set(&timer_w,5,5);
ev_timer_start(main_loop,&timer_w);
ev_run(main_loop,0);
return 0;
}
实现功能:每5s触发一次超时,执行回调函数。