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();

原文地址:https://www.cnblogs.com/qicosmos/p/2997878.html