18,356
社区成员
发帖
与我相关
我的任务
分享
#include <boost/asio.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/bind.hpp>
struct STest
{
STest(boost::asio::io_service& io_server):
m_timer1(io_server),
m_timer2(io_server)
{}
boost::asio::deadline_timer m_timer1;
boost::asio::deadline_timer m_timer2;
};
void TimerHandler1(boost::shared_ptr<STest> pTest, const boost::system::error_code& error)
{
if(!error)
{
pTest->m_timer1.expires_from_now(boost::posix_time::seconds(1));
pTest->m_timer1.async_wait(boost::bind(&TimerHandler1, pTest, boost::asio::placeholders::error));
}
}
void TimerHandler2(boost::shared_ptr<STest> pTest, const boost::system::error_code& error)
{
if(!error)
pTest->m_timer1.cancel();
}
int main()
{
boost::asio::io_service io_Server;
boost::shared_ptr<STest> pTest(new STest(io_Server));
pTest->m_timer1.expires_from_now(boost::posix_time::seconds(1));
pTest->m_timer1.async_wait(boost::bind(&TimerHandler1, pTest, boost::asio::placeholders::error));
pTest->m_timer2.expires_from_now(boost::posix_time::seconds(2));
pTest->m_timer2.async_wait(boost::bind(&TimerHandler2, pTest, boost::asio::placeholders::error));
io_Server.run();
std::cout << "end" << std::endl;
return 0;
}