c++ lamda表达式调用自身实现定时器

刚好要做一个定时器,用asio的deadline_timer,通过异步等待方式去做,超时后重新设置超时时间再重新异步等待。

将lamda表达式放到function中,异步等待的时候再调用自身。

具体代码如下:

timer t;

io_service ios;
deadline_timer dt(ios, posix_time::seconds(2));
cout<<dt.expires_at()<<endl;

std::function<void()> f=[&](){
dt.async_wait([&](system::error_code er)
{
cout<<t.elapsed()<<endl;
dt.expires_at(dt.expires_at()+posix_time::seconds(1));
f(); //调用自身
});
};

f();

ios.run();

版权声明:本文为qicosmos原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/qicosmos/archive/2013/04/03/2997878.html