C++ 定时器任务类实现
#ifndef __TIMERTASK_H_
#define __TIMERTASK_H_ /* 定时器任务基类 */ #include "asr_taskinterface.h"
#include "comontype.h" class BaseTimerTask
{
public:
BaseTimerTask():m_uiTvSec(),m_uiTvUsec(){}
virtual ~BaseTimerTask(){}
public:
//设置定时器间隔
void setTimer(UINT uiTvSec,UINT uiTvUsec = ); //启动定时器
void startTimer(UINT uiTvSec,UINT uiTvUsec = ); //周期性任务
virtual void intervalTask() = ; private:
UINT m_uiTvSec; //秒
UINT m_uiTvUsec; //微秒
}; #endif
#include "timertask.h" #include <sys/select.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h> /********************************************************
BaseTimerTask
*********************************************************/ /********************************************************
Func Name: setTimer
Date Created: 2018-7-30
Description: 设置定时器
Input: uiTvSec:设置间隔多少秒
uiTvUsec:设置间隔多少微秒
Output:
Return:
Caution:
*********************************************************/
void BaseTimerTask::setTimer(UINT uiTvSec,UINT uiTvUsec)
{
m_uiTvSec = uiTvSec;
m_uiTvUsec = uiTvUsec;
} /********************************************************
Func Name: setTimer
Date Created: 2018-7-30
Description: 开启定时器
Input: uiTvSec:设置间隔多少秒
uiTvUsec:设置间隔多少微秒
Output:
Return:
Caution:
*********************************************************/
void BaseTimerTask::startTimer(UINT uiTvSec,UINT uiTvUsec)
{
int infds = ;
struct timeval stTimeval;
m_uiTvSec = uiTvSec;
m_uiTvUsec = uiTvUsec; do
{
stTimeval.tv_sec = (long)m_uiTvSec;
stTimeval.tv_usec = (long)m_uiTvUsec;
//select()每次返回后都会清空struct timeval参数
infds = select(, NULL, NULL, NULL, &stTimeval);
//执行任务
intervalTask();
} while (( == infds) || (infds < && EINTR == errno));
}
#ifndef __TESTTIMER_H_
#define __TESTTIMER_H_ /* 测试定时器任务类 */ #include "timertask.h" class CPrintTimer:public BaseTimerTask
{
public:
virtual void intervalTask();
}; #endif
#include <iostream> #include "testtimer.h" /********************************************************
CPrintTimer
*********************************************************/ /********************************************************
Func Name: intervalTask
Date Created: 2018-7-30
Description: 执行任务
Input:
Output:
Return:
Caution:
*********************************************************/
void CPrintTimer::intervalTask()
{
std::cout << "praise chaos" << std::endl;
}
C++ 定时器任务类实现的更多相关文章
- Python 3.X 实现定时器 Timer,制作抽象的Timer定时器基类
Python 在不依赖第三方库的前提下,对于定时器的实现并不是很完美,但是这不意味着我们无法实现. 阅读了网上的一些资料,得出一些结论,顺手写了一个基类的定时器(Python3) BaseTimer: ...
- 基于ACE的定时器模板类
ACETimerClockGenerator.h ClockGeneratorIF.h 在类中定义一个结构体,在结构体中定义一个函数. 在结构体中定义一个函数,这样做有什么好呢? TimerHandl ...
- 定时器timer类
timer类 Timer(定时器)是Thread的派生类,用于在指定时间后调用一个方法. 构造方法: Timer(interval, function, args=[], kwargs={}) in ...
- java Timer定时器管理类
1.java timer类,定时器类.启动执行定时任务方法是timer.schedule(new RemindTask(), seconds*1000);俩参数分别是TimerTask子类,具体执行定 ...
- 线程中的定时器Timer类
Timer 定时器 几分钟之后执行一个任务. 创建了一个定时器相当于开启了一条线程,TimerTask相当于一个线程的任务.内部使用wait/notify机制来实现的. 用法非常的简单 就足以里面的 ...
- 一个JS定时器类
学习js,因为函数和定时器直接的关系是非绑定的.我不能说我开启一个定时,然后拿一个变量去记录这个setInterval的返回值,这样很麻烦. 本着面向对象的思想,利用业余时间(周末在家里)写了一个类, ...
- Linux下的定时器类实现(select定时+线程)
更好的计时器类实现:LINUX RTC机制实现计时器类(原创) 很多时候需要在LINUX下用到定时器,但像setitimer()和alarm()这样的定时器有时会和sleep()函数发生冲突,这样就给 ...
- VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)
前面一节鸡啄米讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考虑到,提起时间的话就不能不说定时器,所以就把它放到CTime和CTimeSpan之后 ...
- VS2010-MFC(MFC常用类:定时器Timer)
转自:http://www.jizhuomi.com/software/232.html 前面一节讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考 ...
随机推荐
- 如何使Android应用支持多种屏幕分辨率
原文:http://android.eoe.cn/topic/android_sdk 描述: 让您指定您的应用支持的屏幕的大小并且可以通过屏幕兼容模式来支持比您应用所支持更大的屏幕.所以这对于您需要在 ...
- ubuntu for win10 里运行apache+php
一直想试试ubuntu for win10中运行网站测试一下,弄了好久,今天终于基本弄明白了, ubuntu for win10里的IP就是外面WIN10的IP,在里面建立网站了可以直接在外面WIN1 ...
- 3-6-汉诺塔(Hanoi Tower)问题-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版
课本源码部分 第3章 栈和队列 - 汉诺塔(Hanoi Tower)问题 ——<数据结构>-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ <数据结构-C语言版> ...
- linux怎么关闭iptables linux如何关闭防火墙
Linux系统下面自带了防火墙iptables,iptables可以设置很多安全规则.但是如果配置错误很容易导致各种网络问题,那么如果要关闭禁用防火墙怎么操作呢,咗嚛本经验以centos系统为例演示如 ...
- linux命令返回值的妙用
什么是返回值 在shell终端中,你所输入的一切命令其实都有返回值,而这个返回值默认保存在"$?"中,举例看一下 [root@localhost ~]# touch [root@l ...
- godep的save和update
godep save ./... 把依赖的包从GOPATH里找到,然后固化到当前目录Godeps目录里. 但是它不分版本:如果GOPATH里某个包升级了,godep save不会把它更新到Godeps ...
- ansible报错:Failed to connect to the host via ssh: Permission denied
原因: 没有在ansible管理节点(即安装ansible的节点)上添加目标节点(即需要管理的节点)的ssh认证信息. 解决办法: 1.在管理节点生成公钥 ssh-keygen 路径为:~/.ssh/ ...
- maven 打包时提示 软件包 xxxxxxx 不存在
右键项目->MAVEN->Update Project Configuration然后clean相关项目再打包如果还不行 在你关联包的路径下 把所有文件删掉 在打包的时候会重新下载 ...
- Python3机器学习—Tensorflow数字识别实践
[本文出自天外归云的博客园] Windows下Anaconda+Tensorflow环境部署 1. 安装Anaconda. 2. 开始菜单 > 所有程序 > Anaconda 3 (64- ...
- YII登陆错误 mcrypt_create_iv()
使用php框架YII进行开发的时候,虽然很快,性能很好,但是也有一些小问题,现在记录下来. 1.在使用gii的自动代码生成后,登陆系统,就会报错 mcrypt_create_iv() [<a h ...