GNU/Linux >> Linux Esercitazione >  >> Linux

C++ Boost ASIO semplice timer periodico?

Un esempio molto semplice, ma perfettamente funzionante:

#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;
}

Si noti che è molto importante chiamare expires_at() per impostare una nuova ora di scadenza, altrimenti il ​​timer scatterà immediatamente perché è l'ora di scadenza attuale già scaduta.


Lo spiega il secondo esempio sui tutorial di Boosts Asio.
Puoi trovarlo qui.

Successivamente, controlla il terzo esempio per vedere come puoi richiamarlo di nuovo con un intervallo di tempo periodico


Linux
  1. Reindirizzamento semplice del sito web tramite .htaccess

  2. Semplice recupero dati dal disco rigido

  3. 13 esercizi per migliorare le tue abilità con Linux

  4. Boost e Autoconf

  5. stampa stack di chiamate in C o C++

Crea un timer su Linux

fd – Un'alternativa semplice e veloce per trovare il comando

Il comando timer in Linux

C++ -fvisibility=hidden -fvisibility-inlines-hidden

C++ Boost:riferimento non definito a boost::system::generic_category()

Come configurare una richiamata periodica del timer in un modulo del kernel Linux