程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poco c++框架:定時器

poco c++框架:定時器

編輯:C++入門知識

poco c++框架:定時器


 做到現在,感覺poco的應用場景(見本博客的其它博文)還是很好的,在這些應用場景下,構架中的類直接封裝到位,方便應用開發。       面向對象的目的在於軟件代碼的重復利用,避免重復造輪子,提高開發效率。POCO很好的體現了這個原則,和Qt一樣完善,可以說已經面向組件的開發。       下面開始看看本章節的內容: 一 poco c++定時器本質分析       定時器作為線程的擴展,也是編程時經常會被用到的元素。       在程序設計上,定時器的作用是很簡單。預定某個定時器,即希望在未來的某個時刻,程序能夠得到時間到達的觸發信號。       本定時器的應用場景很明確了:在線程中定時執行任務,如定時發送請求報文,定時備份數據。 編程時,一般對定時器使用有下面一些關注點: 1. 定時器的精度。Poco中的定時器精度並不是很高,具體精度依賴於實現的平台(Windows or Linux) 2. 定時器是否可重復,即定時器是否可觸發多次。 Poco中的定時器精度支持多次觸發也支持一次觸發,由其構造函數Timer決定 3. 一個定時器是否可以設置多個時間。 Poco中定時器不支持設置多個時間,每個定時器對應一個時間。如果需要多個時間約定的話,使用者要構造多個定時器。 二 poco c++定時器的應用步驟  2.1定義定時器變量 class MovieMode {     Poco::Timer m_timerRestartLive; }; 2.2聲明並實現回調函數 void OnTimerReStart(Poco::Timer& timer); void MovieMode::OnTimerReStart(Poco::Timer& timer); { } 2.3設置時間間隔 m_timerRestartLive.setStartInterval(10000);     //第一次,多長時間啟動 m_timerRestartLive.setPeriodicInterval(1000); //設置定時時間間隔 可以這樣寫的: Timer timer(2500, 500); 2.4注冊回調函數 Poco::TimerCallback<MovieMode> timerCallback(*this, &MovieMode::OnTimerReStart); 2.5開啟定時器 m_timerRestartLive.start(timerCallback, *BigThreadPool::GetInstance()); 2.6退出定時器 m_timerRestartLive.stop();  三 程序例子 程序的涵義:程序啟動2.5秒後,開啟定時器,在余下的2.5秒內,每隔0.5秒,執行一次。  
#include "Poco/Timer.h"
#include "Poco/Thread.h"
#include "Poco/Stopwatch.h"
#include <iostream>

using Poco::Timer;
using Poco::TimerCallback;
using Poco::Thread;
using Poco::Stopwatch;

class TimerExample
{
public:
    TimerExample()
    {
        _sw.start();
    }

    void onTimer(Timer& timer)
    {
        std::cout << "Callback called after " << _sw.elapsed()/1000 << " milliseconds." << std::endl;
    }

private:
    Stopwatch _sw;
};


int main(int argc, char** argv)
{
    TimerExample example;

    Timer timer(2500, 500);
    timer.start(TimerCallback<TimerExample>(example, &TimerExample::onTimer));

    Thread::sleep(5000);

   // timer.stop();

    return 0;
}

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved