ndler中启动另外一个异步操作来分配更多的工作。 另一种方式模拟一些工作给它,用下面的代码片段: typedef boost::shared_ptr
work_ptr;
work_ptr dummy_work(new io_service::work(service_));
上面的代码可以保证service_.run()一直运行直到你调用useservice_.stop()或者 dummy_work.reset(0);// 销毁 dummy_work.
总结 Boost.Asio是一个复杂的库,但是却让网络
编程变得异常简单。编译它很简单。它避免使用宏,这一点做得很好;他虽然定义了少部分的宏来做选项开关,但是你需要担心的很少。 Bosot.Asio支持同步和异步编程。他们有很大不同;你需要早早地选择其中的一种,因为它们之间的转换是非常复杂而且易错的。 如果你选择同步,你可以选择异常处理或者错误码,从异常处理转到错误码;只需要在call函数中增加一个参数即可(错误码)。 Boost.Asio不仅仅可以用来做网络编程。它还有其他更多的特性,这让它显得更有价值,比如信号量,计时器等等。 下一章我们将深入研究大多数Boost.Asio中用来做网络编程的函数和类。同时我们也会学一些异步编程的诀窍。
|