首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

POCO C++ 框架:定時器 Timer 使用詳解

     編輯:關於C++

定時器本質

定時器是線程擴展,預定未來時刻觸發信號。關注點:精度(平台相關)、可重複觸發、單定時器單時間(多時間需多定時器)。

使用步驟

  1. 定義成員 Poco::Timer m_timer;。
  2. 實現回調 void onTimer(Timer&)。
  3. 設置間隔:setStartInterval(ms) 首次延遲,setPeriodicInterval(ms) 週期;或構造 Timer(start, period)。
  4. 註冊回調:Poco::TimerCallback<Class> cb(*this, &Class::onTimer);。
  5. 啟動:m_timer.start(cb, threadPool);。
  6. 停止:m_timer.stop();。

完整範例


#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 {
    Stopwatch _sw;
public:
    TimerExample() { _sw.start(); }
    void onTimer(Timer& timer) {
        std::cout << "Callback after " << _sw.elapsed()/1000 << " ms." << std::endl;
    }
};

int main() {
    TimerExample ex;
    Timer timer(2500, 500); // 2.5s 首次,500ms 週期
    timer.start(TimerCallback<TimerExample>(ex, &TimerExample::onTimer));
    Thread::sleep(5000); // 主線程等待
    // timer.stop();
    return 0;
}

輸出:啟動 2.5s 後,每 0.5s 觸發一次回調。

應用場景

  • 定時發送心跳/請求報文。
  • 定時備份數據/檢查狀態。
  • 任何需在線程中週期性執行的任務。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved