C++ Boost Asio Timer

Da Andreabont's Wiki.
Versione del 28 gen 2020 alle 09:49 di Andreabont (Discussione | contributi) (Compilare)

Le Boost Asio sono delle librerie dedicate alla comunicazione di rete, esse forniscono una serie di gestione di eventi legati ai timer.

Compilare

g++ -std=c++11 <file_cpp> -lboost_system -pthread

Codice

Timer sincroni

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

int main() {
    
    boost::asio::io_service io;

    boost::asio::deadline_timer timer(io, boost::posix_time::seconds(5));
    timer.wait();

    std::cout << "Hello, world!\n";

    return 0;

}

Timer asincroni

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

int main() {
    
    boost::asio::io_service io;

    std::cout << "Start Timer 1" << std::endl;
    boost::asio::deadline_timer timer_1(io, boost::posix_time::seconds(10));
    timer_1.async_wait([](const boost::system::error_code& e){
        std::cout << "End Timer 1" << std::endl;
    });

    std::cout << "Start Timer 2" << std::endl;
    boost::asio::deadline_timer timer_2(io, boost::posix_time::seconds(5));
    timer_2.async_wait([](const boost::system::error_code& e){
        std::cout << "End Timer 2" << std::endl;
    });

    io.run();

    return 0;
    
}