libev源码分析(三)---ev_timer

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 
#include 
#include 
#include 
#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触发一次超时,执行回调函数。

你可能感兴趣的:(嵌入式,网络编程)