#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++ 定时器任务类实现的更多相关文章

  1. Python 3.X 实现定时器 Timer,制作抽象的Timer定时器基类

    Python 在不依赖第三方库的前提下,对于定时器的实现并不是很完美,但是这不意味着我们无法实现. 阅读了网上的一些资料,得出一些结论,顺手写了一个基类的定时器(Python3) BaseTimer: ...

  2. 基于ACE的定时器模板类

    ACETimerClockGenerator.h ClockGeneratorIF.h 在类中定义一个结构体,在结构体中定义一个函数. 在结构体中定义一个函数,这样做有什么好呢? TimerHandl ...

  3. 定时器timer类

    timer类 Timer(定时器)是Thread的派生类,用于在指定时间后调用一个方法. 构造方法: Timer(interval, function, args=[], kwargs={})  in ...

  4. java Timer定时器管理类

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

  5. 线程中的定时器Timer类

    Timer 定时器 几分钟之后执行一个任务. 创建了一个定时器相当于开启了一条线程,TimerTask相当于一个线程的任务.内部使用wait/notify机制来实现的. 用法非常的简单  就足以里面的 ...

  6. 一个JS定时器类

    学习js,因为函数和定时器直接的关系是非绑定的.我不能说我开启一个定时,然后拿一个变量去记录这个setInterval的返回值,这样很麻烦. 本着面向对象的思想,利用业余时间(周末在家里)写了一个类, ...

  7. Linux下的定时器类实现(select定时+线程)

    更好的计时器类实现:LINUX RTC机制实现计时器类(原创) 很多时候需要在LINUX下用到定时器,但像setitimer()和alarm()这样的定时器有时会和sleep()函数发生冲突,这样就给 ...

  8. VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)

    前面一节鸡啄米讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考虑到,提起时间的话就不能不说定时器,所以就把它放到CTime和CTimeSpan之后 ...

  9. VS2010-MFC(MFC常用类:定时器Timer)

    转自:http://www.jizhuomi.com/software/232.html 前面一节讲了CTime类和CTimeSpan类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考 ...

随机推荐

  1. 全局获取 (Activity)Context,实现全局弹出 Dialog

    为什么需要一个全局的 (Activity)Context 需求1:在进入 app 的时候,要求做版本检测,有新的版本的时候,弹出一个 AlertDialog,提示用户版本更新 需求2:从别的设备挤下来 ...

  2. Atitti python2.7安装 numpy attilax总结

    Atitti python2.7安装 numpy attilax总结 1.1. easy_install 安装模式,没有 easy_install ,先手动安装1 1.2. 安装setuptools ...

  3. css3实现画对号动画

    目标:实现对号动画,慢慢画出来的感觉: 原理:外层div的背景是一个对号图片,用一个div做遮罩,让遮罩div层从左到右做运动一次即可实现动画,需要注意的是遮罩div的初始位置应该在外层div的外面: ...

  4. Pycharm 2017.1 激活服务器

    最近发现pycharm激活异常困难 原来的激活码 都不能用了 so 根据网上 教程 自己建了激活服务器 尝试可用服务器 20170504 测试发现 给需要域名 http://www.05nb.com: ...

  5. [Windows Azure] Learn SQL Reporting on Windows Azure (9-Step Tutorial)

    Learn SQL Reporting on Windows Azure (9-Step Tutorial) 4 out of 4 rated this helpful - Rate this top ...

  6. 4.3之后的PingPong效果实现

    旧版本的Unity提供Animation编辑器来编辑物理动画. 在其下方可以设置动画是Loop或者是Pingpong等运动效果. 但是,在4.3之后,Unity的动画系统发生了较大的变化. 相信很多童 ...

  7. golang标准库分析之net/rpc

    net/rpc是golang提供的一个实现rpc的标准库.

  8. 【Bootstrap Method】Evaluating The Accuracy of a Classifier

    自助法介绍: 非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法,也称为自助法.其核心思想和基本步骤如下:(1)采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样 ...

  9. C++中虚函数的作用是什么?它应该怎么用呢?

    虚函数联系到多态,多态联系到继承.所以本文中都是在继承层次上做文章.没了继承,什么都没得谈. 下面是对C++的虚函数这玩意儿的理解. 一, 什么是虚函数(如果不知道虚函数为何物,但有急切的想知道,那你 ...

  10. css优化建议

    1.不要使用过小的图片做背景平铺.这就是为何很多人都不用 1px 的原因,这才知晓.宽高 1px 的图片平铺出一个宽高 200px 的区域,需要 200*200=40, 000 次,占用资源. 2.无 ...