Error

C++博客 首页 新随笔 联系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

原则上将会在处理完所有的异步请求以后返回,具体内部是某个变量控制的。

可以通过:

boost::asio::io_service io_service;

boost::asio::io_service::work work(io_service);

work构造以后会让io_service内部的某个控制变量自增这样run就不会返回了。

 

可以通过类似这样的技巧更漂亮的控制:

boost::asio::io_service asioService;
//boost::asio::io_service::work work(asioService);
boost::scoped_ptr<boost::asio::io_service::work> spWork(new boost::asio::io_service::work(asioService));
asioService.run();  // 这样run就会一直执行不会返回

...
spWork.reset();// reset会导致内部的work析构,析构以后io_service里边的控制量就会正常。run处理完所有异步请求就会返回了

posted on 2012-11-07 10:27 Enic 阅读(2271) 评论(0)  编辑 收藏 引用 所属分类: boost::asio

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理