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 中毛玻璃效果的实现
最近在做一款叫叽叽的App(男银懂的),其中有一个功能需要对图片处理实现毛玻璃的特效 进过一番预研,找到了3中实现方案,其中各有优缺点: 1.如果系统的api在16以上,可以使用系统提供的方法直接处理 ...
- HTML5学习笔记(二十五):事件
在浏览器或文档某个元素发生某个特定情况的瞬间,会作为一个事件进行广播,我们可以对其添加监听来处理特定的事件. 事件流 事件流描述了页面中接收事件的顺序. 整个事件流包含了三个阶段:事件捕获阶段.事件目 ...
- python(58):python下划线
详解Python中的下划线 本文将讨论Python中下划线(_)字符的使用方法.我们将会看到,正如Python中的很多事情,下划线的不同用法大多数(并非所有)只是常用惯例而已. 单下划线(_) 通常情 ...
- python(49):把文件压缩成zip格式的文件
有时需要用到压缩文件,网上搜集了一段代码: 分享一下: import os import zipfile def make_zip(localPath, pname): zipf = zipfile. ...
- setRequestedOrientation
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//通过程序改变屏幕显示的方向 1.landscape:横屏(风景 ...
- Silverlight 控件
http://www.cnblogs.com/yangfan/archive/2010/03/11/1683580.html
- Mac下更改Python pip的源
步骤 ➜ ~ mkdir .pip ➜ ~ cd .pip ➜ .pip touch pip.conf ➜ .pip vi pip.conf 其中pip.conf的内容为: [global] inde ...
- Pycharm快捷键整理(Mac)
用过快捷键立即感觉高大上了,最主要的是很方便啊!很强大 cmd b 跳转到声明处(cmd加鼠标) opt + 空格 显示符号代码 (esc退出窗口 回车进入代码) cmd []光标之前/后的位置 op ...
- keepalived+nginx双机热备+负载均衡
Reference: http://blog.csdn.net/e421083458/article/details/30092795 keepalived+nginx双机热备+负载均衡 最近因业务扩 ...
- Eigen教程(6)
整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html 高级初始化方法 本篇介绍几种高级的矩阵初始化方法,重点介绍逗号初始化和特殊矩阵(单位 ...