C++ 定時器任務類實現

來源:互聯網
上載者:User

標籤:eva   public   errno.h   created   ISE   val   desc   基類   settimer   

#ifndef __TIMERTASK_H_#define __TIMERTASK_H_/* 定時器任務基類 */#include "asr_taskinterface.h"#include "comontype.h"class BaseTimerTask{public:    BaseTimerTask():m_uiTvSec(0),m_uiTvUsec(0){}    virtual ~BaseTimerTask(){}public:    //設定定時器間隔    void setTimer(UINT uiTvSec,UINT uiTvUsec = 0);    //啟動定時器    void startTimer(UINT uiTvSec,UINT uiTvUsec = 0);    //週期性任務    virtual void intervalTask() = 0;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: setTimerDate 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: setTimerDate Created: 2018-7-30 Description: 開啟定時器       Input: uiTvSec:設定間隔多少秒             uiTvUsec:設定間隔多少微秒      Output:       Return:      Caution: *********************************************************/void BaseTimerTask::startTimer(UINT uiTvSec,UINT uiTvUsec){    int infds = 0;    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(0, NULL, NULL, NULL, &stTimeval);        //執行任務        intervalTask();    } while ((0 == infds) || (infds < 0 && 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: intervalTaskDate Created: 2018-7-30 Description: 執行任務       Input:       Output:       Return:      Caution: *********************************************************/void CPrintTimer::intervalTask(){    std::cout << "praise chaos" << std::endl;}

 

C++ 定時器任務類實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.