Timer定时器开发

本文介绍了如何使用WFTimerTask开发定时器,强调了定时器在程序退出时的行为,包括如何中断定时器并确保程序无延迟退出。同时,提供了创建多个短定时器替代长定时器的方法,以适应不同场景的需求。
摘要由CSDN通过智能技术生成

Timer定时器开发

定时器的作用是不占线程的等待一个确定时间,同样通过callback来通知定时器到期。

参考:https://github.com/sogou/workflow

定时器的创建

同样是在WFTaskFactory类里的方法:

using timer_callback_t =
std::function<void (WFTimerTask*)>;

class WFTaskFactory

{

static WFTimerTask *create_timer_task(unsigned int microseconds,

                                      timer_callback_t callback);

};

第一个参数为定时时间,单位为微秒。除了程序退出,定时器不可以提前结束。

定时器任务里同样有user_data域可以用来传递一些用户数据。启动方法和接入任务流的方法与其它任务没有区别。

定时器的一个高级特征

在关于程序退出里讲到,main函数结束或exit()被调用的时候,所有任务必须里运行到callback,并且没有新的任务被调起。

这们就可能出现一个问题,定时器的最长定时时间超过了1小时,并且不能主动打断。如果等定时器到期,程序退出需要很长时间。

而实现上,程序退出是可以打断定时器,让定时器回到callback的。如果定时器被程序退出打断,get_state()会得到一个WFT_STATE_ABORTED状态。

当然如果定时器被程序退出打断,则不能再调起新的任务。

以下这个程序,每间隔一秒抓取一个一个h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值