GNU/Linux >> LINUX-Kenntnisse >  >> Linux

C++ Boost ASIO einfacher periodischer Timer?

Ein sehr einfaches, aber voll funktionsfähiges Beispiel:

#include <iostream>
#include <boost/asio.hpp>

boost::asio::io_service io_service;
boost::posix_time::seconds interval(1);  // 1 second
boost::asio::deadline_timer timer(io_service, interval);

void tick(const boost::system::error_code& /*e*/) {

    std::cout << "tick" << std::endl;

    // Reschedule the timer for 1 second in the future:
    timer.expires_at(timer.expires_at() + interval);
    // Posts the timer event
    timer.async_wait(tick);
}

int main(void) {

    // Schedule the timer for the first time:
    timer.async_wait(tick);
    // Enter IO loop. The timer will fire for the first time 1 second from now:
    io_service.run();
    return 0;
}

Beachten Sie, dass es sehr wichtig ist, expires_at() aufzurufen um eine neue Ablaufzeit festzulegen, andernfalls wird der Timer sofort ausgelöst, da seine aktuelle Fälligkeitszeit bereits abgelaufen ist.


Das zweite Beispiel in den Boosts Asio-Tutorials erklärt es.
Sie finden es hier.

Überprüfen Sie danach das 3. Beispiel, um zu sehen, wie Sie es mit einem periodischen Zeitintervall erneut aufrufen können


Linux
  1. Einfache Wiederherstellung von Festplattendaten

  2. 13 Übungen, um Ihre Linux-Kenntnisse zu verbessern

  3. Einfacher Befehlszeilenrechner?

  4. Einfaches C++-Thread-Programm kann nicht kompiliert werden?

  5. C++ -fvisibility=hidden -fvisibility-inlines-hidden

Erstellen Sie einen Timer unter Linux

fd – Eine einfache und schnelle Alternative zum Find-Befehl

Einfache Website-Umleitung über .htaccess

Einfacher PHP-Mail-Test

Der Timer-Befehl in Linux

So richten Sie einen periodischen Timer-Callback in einem Linux-Kernel-Modul ein