我正在学习 Boost.Asio,这是我正在谈论的代码: 链接到代码
我编写的以下代码似乎是相同的并且可以工作:(使用“-lboost_system”和“-std=c++11”编译)
#include<iostream>
#include<boost/asio.hpp>
#include<functional>
#include<boost/date_time/posix_time/posix_time.hpp>
typedef const boost::system::error_code cbse;
int main()
{
boost::asio::io_service io;
boost::asio::deadline_timer t(io,boost::posix_time::seconds(1));
int count=0;
std::function<void(cbse&)>
cb=[&](cbse&)
{
if(count<5)
{
std::cout<<"foo"<<std::endl;
count++;
t.expires_at(t.expires_at()+boost::posix_time::seconds(1));
t.async_wait(cb);
}
else
std::cout<<"done"<<std::endl;
};
t.async_wait(cb);
std::cout<<"Hello"<<std::endl;
io.run();
return 0;
}
我错过了一些重要的区别吗?
从直觉上讲,递归调用回调对我来说似乎不是一个好主意,是否只是为了解释而在文档中给出?