//// timer.cpp// ~~~~~~~~~//// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distributed under the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//#include<iostream>#include<boost/asio.hpp>#include<boost/thread/thread.hpp>#include<boost/bind.hpp>#include<boost/date_time/posix_time/posix_time.hpp>classprinter{public:printer(boost::asio::io_service&io):strand_(io),timer1_(io,boost::posix_time::seconds(1)),timer2_(io,boost::posix_time::seconds(1)),count_(0){timer1_.async_wait(strand_.wrap(boost::bind(&printer::print1,this)));timer2_.async_wait(strand_.wrap(boost::bind(&printer::print2,this)));}~printer(){std::cout<<"Final count is "<<count_<<std::endl;}voidprint1(){if(count_<10){std::cout<<"Timer 1: "<<count_<<std::endl;++count_;timer1_.expires_at(timer1_.expires_at()+boost::posix_time::seconds(1));timer1_.async_wait(strand_.wrap(boost::bind(&printer::print1,this)));}}voidprint2(){if(count_<10){std::cout<<"Timer 2: "<<count_<<std::endl;++count_;timer2_.expires_at(timer2_.expires_at()+boost::posix_time::seconds(1));timer2_.async_wait(strand_.wrap(boost::bind(&printer::print2,this)));}}private:boost::asio::io_service::strandstrand_;boost::asio::deadline_timertimer1_;boost::asio::deadline_timertimer2_;intcount_;};intmain(){boost::asio::io_serviceio;printerp(io);boost::threadt(boost::bind(&boost::asio::io_service::run,&io));io.run();t.join();return0;}
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.