GNU/Linux >> Znalost Linux >  >> Linux

C++ Boost ASIO jednoduchý periodický časovač?

Velmi jednoduchý, ale plně funkční příklad:

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

Všimněte si, že je velmi důležité volat expires_at() nastavit nový čas vypršení, jinak se časovač spustí okamžitě, protože jeho aktuální čas vypršení již vypršel.


Druhý příklad na výukových programech Boosts Asio to vysvětluje.
Najdete ho zde.

Poté se podívejte na 3. příklad a zjistěte, jak jej můžete znovu volat s periodickým časovým intervalem


Linux
  1. Boost a Autoconf

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

  3. vytisknout zásobník volání v C nebo C++

  1. Změňte časovač linuxového jádra

  2. Detekce Windows nebo Linuxu v C, C++

  3. C++ Boost:nedefinovaný odkaz na boost::system::generic_category()

  1. Jednoduché přesměrování webových stránek přes .htaccess

  2. Jak nastavit pravidelné zpětné volání časovače v modulu jádra Linuxu

  3. Jednoduchý příklad auditované konfigurace?