GNU/Linux >> Tutoriales Linux >  >> Linux

C ++ Boost ASIO temporizador periódico simple?

Un ejemplo muy simple, pero completamente funcional:

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

Tenga en cuenta que es muy importante llamar a expires_at() para establecer un nuevo tiempo de vencimiento; de lo contrario, el temporizador se activará inmediatamente porque el tiempo de vencimiento actual ya venció.


El segundo ejemplo en los tutoriales de Boosts Asio lo explica.
Puedes encontrarlo aquí.

Después de eso, revisa el tercer ejemplo para ver cómo puedes llamarlo nuevamente con un intervalo de tiempo periódico


Linux
  1. Redirección simple del sitio web a través de .htaccess

  2. Recuperación de datos de disco duro simple

  3. ¿Calculadora de línea de comandos simple?

  4. imprimir pila de llamadas en C o C++

  5. Cambiar el temporizador del kernel de Linux

Crear un temporizador en Linux

fd:una alternativa simple y rápida para encontrar el comando

El comando del temporizador en Linux

C++ Boost:referencia indefinida a boost::system::generic_category()

Cómo configurar una devolución de llamada del temporizador periódico en un módulo del kernel de Linux

¿Ejemplo simple de configuración auditada?