注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[libev] events(3) -- ev_periodic  

2011-01-25 16:46:30|  分类: net_libev |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
ev_periodic 是个 cron-like 的 timer,可以在"到达某个时间点"时触发func。这个 ev_periodic 很实用。
不过 ev_periodic 的接口有点复杂,如果参数就是一个 cron-like string 是不是更佳?

--------------------------------------------------------
#include <ev.h>
#include <stdio.h>
#include <time.h>

static void
t1_cb(struct ev_loop *loop, ev_timer *timer, int revents)
{
    printf("t1 = %d\n", time(NULL));
}

static void
t2_cb(struct ev_loop *loop, ev_timer *timer, int revents)
{
    printf("t2 = %d\n", time(NULL));
}

static void
t3_cb(struct ev_loop *loop, ev_timer *timer, int revents)
{
    printf("t3 = %d\n", time(NULL));
}

static ev_tstamp
my_rescheduler(ev_periodic *w, ev_tstamp now)
{
    return now + 30.;
}

// ev_periodic_init (ev_periodic *, callback, ev_tstamp offset, ev_tstamp interval, reschedule_cb)
int main(void)
{
    struct ev_loop *loop = ev_default_loop(0);
    ev_periodic t1, t2, t3;

    // absolute timer (offset = absolute time, interval = 0, reschedule_cb = 0)
    // trigger in a certain timestamp, 当前时间 5 secs 后触发
    ev_periodic_init(&t1, t1_cb, time(NULL) + 5.0, 0., NULL);
    ev_periodic_start(loop, &t1);

    // repeating interval timer (offset = offset within interval, interval > 0, reschedule_cb = 0)
    // time = offset (mod interval),每天的 ... 、16:35、17:05、17:35、... 
    ev_periodic_init(&t2, t2_cb, 60.0*5, 1800.0, NULL);
    ev_periodic_start(loop, &t2);

    // manual reschedule mode (offset ignored, interval ignored, reschedule_cb = callback)
    // 自己定制,这里是每 30 sec 一次
    ev_periodic_init(&t3, t3_cb, 0., 0., my_rescheduler);
    ev_periodic_start(loop, &t3);

    ev_run(loop, 0);
    return 0;
}
--------------------------------------------------------
$ date
Tue Jan 25 16:34:43 CST 2011
$ ./a.out 
t1 = 1295944489
t2 = 1295944500
t3 = 1295944514
^C
$ date -r 1295944500
Tue Jan 25 16:35:00 CST 2011
--------------------------------------------------------
  评论这张
 
阅读(1662)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017