Libuv Timers定时器

  在定时器启动后一段特定的时间后,定时器会调用回调函数。Libuv的定时器还可以设定为按照时间间隔定时启动,而不仅仅是启动一次。

  简单地使用一个定时器,超过时间timeout作为参数初始化定时器(意味第一次启动之后多久响应回调事件),还有一个可选参数repeat。定时器可以在任意时刻被终止。

uv_timer_t timer_req;uv_timer_init(loop,&timer_req);
uv_timer_start(&timer_req,callback,5000,2000);

  上述操作会启动一个循环定时器(repeating timer),它会调用uv_timer_start后,5秒(timeout)启动回调函数,然后每2秒(repeat)循环启动回调函数。可以使用:

uv_timer_stop(&timer_req);

  来终止一个定时器。这个函数也可以在回调函数中被安全地使用。

  循环的间隔也可以被随时定义,使用:

uv_timer_set_repeat(uv_timer_t* timer,int64_t repeat);

  它会在可能的情况下发挥作用。如果上述函数是在定时器回调函数中被调用,这意味着:

  • 如果定时器未设置循环,此时定时器已经停止。需要先用uv_timer_start重新启动。
  • 如果定时器被设置为循环,那么下一次超时的时间已经被规划好,所以在切换新的循环间隔之前,旧的循环间隔仍然还会发挥一次作用。

  工具函数:

int uv_timer_again(uv_timer_t *)

  只适用于循环定时器,相当于停止定时器,然后把原先的timeoutrepeat值都设置为之前的repeat值,并启动定时器。如果调用该函数的时候,定时器尚未启动,那么则调用失败(错误码UV_EINVAL)并返回-1。

简单示例

static uv_timer_t testTimer;void Test(uv_timer_t* handle)
{fprintf(stdout, "load Test1 %llu\n", uv_now(g_loop));static int count = 0;count++;fprintf(stdout, "update shopActive %d\n", count);if (count == 5){fprintf(stdout, "save shopData %d\n", count);count = 0;}
}int main(int argc, char* argv[])
{g_loop = uv_default_loop();uv_timer_init(g_loop, &testTimer);uv_timer_start(&testTimer, Test, 0, 5000);uv_run(g_loop, UV_RUN_DEFAULT);printf("main loop stop\n");return 0;
}

Libuv Timer定时器相关推荐

  1. Timer定时器开发

    Timer定时器开发 定时器的作用是不占线程的等待一个确定时间,同样通过callback来通知定时器到期. 参考:https://github.com/sogou/workflow 定时器的创建 同样 ...

  2. java Timer定时器管理类

    1.java timer类,定时器类.启动执行定时任务方法是timer.schedule(new RemindTask(), seconds*1000);俩参数分别是TimerTask子类,具体执行定 ...

  3. timer.schedule —— timer定时器的用法

    Java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks. 一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerT ...

  4. python timer使用-Python timer定时器两种常用方法解析

    这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法一,使用线程中现成的: 这种一般 ...

  5. 【Android 异步操作】Timer 定时器 ( Timer 与 TimerTask 基本使用 | Timer 定时器常用用法 | Timer 源码分析 )

    文章目录 一.Timer 定时器基本使用 二.Timer 定时器常用用法 三.Timer 源码分析 四.Timer 部分源码注释 五.源码及资源下载 参考文档 : Timer 定时器 API 文档 T ...

  6. java项目中多个定时器_在java项目中如何使用Timer定时器

    在java项目中如何使用Timer定时器 发布时间:2020-11-16 16:36:16 来源:亿速云 阅读:97 作者:Leah 在java项目中如何使用Timer定时器?很多新手对此不是很清楚, ...

  7. java timer线程结束_Java线程Timer定时器用法详细总结

    定时/计划功能主要使用的就是Timer对象,它在内部还是使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联. Timer类主要作用就是设置计划任务,但封装任务的类却是TimerTask类.T ...

  8. Timer定时器控件 1130

    Timer定时器控件 1130 引入 Timer 属性

  9. c# 使用timer定时器操作,上次定时到了以后,下次还未执行完怎么处理

    c# 使用timer定时器操作,下次定时到了以后,上次还未执行完怎么办 ------解决方案------------------------------------------------------ ...

最新文章

  1. PDO防注入原理分析以及使用PDO的注意事项 (转)
  2. 不只是让利百亿,天猫618揭示了哪些新零售趋势?
  3. unity镜头边缘羽化_【后期修图】如何利用Ps中的自适应广角滤波器校正镜头失真?...
  4. 37职责链模式(Chain of Responsibility Pattern)
  5. ssis 映射列 使用变量_SSIS中的动态列映射:SqlBulkCopy类与数据流
  6. 计算机的进制数思想在哪方面有应用,计算机应用技术问答题(一)
  7. win10配置python_win10中的Python安装与环境配置
  8. CEM计算电磁学 -- Lecture 1 学习笔记 (1) --- 麦克斯韦方程、波动方程
  9. 分布式事务框架-seata
  10. 苹果开发者账号绑定设备已满
  11. UltraEdit 21.30.1006.0 繁体中文破解版(功能最强的文本编辑器)
  12. 虚幻4渲染编程(环境模拟篇)【第三卷:体积云天空模拟(3)---高层云】
  13. 前端报表导出成word文档(含echarts图表)
  14. 【5】依赖注入DI(Dependency Injection)
  15. 大话计算机知识流程图,大话数据结构 -- 整理归纳(1)
  16. Centos7扩容根目录
  17. C语言进阶——内联汇编
  18. 谷歌浏览器table不规则表格使用rowspan/colspan导致线条粗细不同
  19. Kubernetes之(十七)网络模型和网络策略
  20. java中fido_使用YOCTO fido分支创建的工具链问题

热门文章

  1. python获取网页数据判断并提交_【python爬虫网页结构分析】判断数据是在html的静态网页还是在动态网页;找对URL;豆瓣;QQ音乐...
  2. 计算机网络安全-----防火墙
  3. LLVM-clang
  4. 泰勒公式求极限c语言switch,C语言利用泰勒公式构造求SIN(X),求大触帮看我的代码哪里有问题...
  5. 使用C语言产生正弦波数据
  6. 2038年危机!“Unix千年虫”
  7. 微信小程序--视频播放器
  8. pcre_exec()详解
  9. web漏洞--注入漏洞
  10. flutter TextField 输入框组件