boost 版本 1_45_0
io_service 为异步I/O对像提供核心功能.以下是我们常用对象:
boost::asio::ip::tcp::socket
boost::asio::ip::tcp::acceptor
boost::asio::ip::udp::socket
这些对象的构造函数里都有一个必须的参数就是io_service&,
也就是说每个异步对像都需要1个io_service.但可以共用一个公共的io_service
io_service 为它们服务的过程,主要通过以下几个函数:
run;
run_one;
poll;
poll_one;
这几个函数都有几个重载,主要功能都一样.用户在自己创建的线程中调用这些函数,驱动异步操作完成.
这些函数的源代码在detail/impl下的io_service.ipp里.
io_service中有一个核心成员:
class io_service : private noncopyable
{
...
impl_type& impl_;
}
这个impl_ 是io_service类真正的实现,当使用者在调用io_service的成员函数时,大部分函数都会转而调用
impl_的相应同名函数.其中就包括上面4个重要的函数. ( 其实是一种实现和声明分开的一种方法,
好处是可以减少头文件的依赖性,
在detail