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类的使用,本节继续讲与时间有关的定时器.定时器并不是一个类,主要考 ...
随机推荐
- 全局获取 (Activity)Context,实现全局弹出 Dialog
为什么需要一个全局的 (Activity)Context 需求1:在进入 app 的时候,要求做版本检测,有新的版本的时候,弹出一个 AlertDialog,提示用户版本更新 需求2:从别的设备挤下来 ...
- 腾讯云服务器 - 定时备份MariaDB/MySQL
数据库数据备份尤为重要,而我们不会人工手动去备份,这样会很麻烦,我们都是通过服务器每日自定运行来做的,设置一个定时时间即可 首先我们看一下mysqldump这个文件的位置: 可以看到目录在 /usr/ ...
- performance Counter
Logman https://technet.microsoft.com/en-us/library/bb490956.aspx http://blogs.technet.com/b/askperf/ ...
- 正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少, ...
- Android 编程下string-array 的使用
在实际开发中,当数据为固定数据.数据量不是很大.希望很方便的获取到这些数据的时候,可以考虑使用这种低成本的方式来获取预装数据.将想要保存的数据存储到 values 文件夹下的 arrays.xml 文 ...
- SQLite三种JDBC驱动的区别
在DBeaver中看到SQLite有三种JDBC驱动,查了它们官方网站的相关解释,发现它们还是挺不一样的. SQLite Wrapper by Christian http://www.ch-we ...
- js 时间格式化和时间戳
formatMessageTime: function (time) { var week = { "0": "星期日", "1": &qu ...
- spark提示Caused by: java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot be cast to [Lscala.collection.immutable.Map;
spark提示Caused by: java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot b ...
- Java自动创建多层文件目录
// 创建文件上传路径 public static void mkdir(String path) { File fd = null; try { fd = new File(path); if (! ...
- spring boot guava cache 缓存学习
http://blog.csdn.net/hy245120020/article/details/78065676 ****************************************** ...