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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值