使用boost io_service时,需要注意的东西

boost::asio 在创建io_service时,可以指定线程数,如果没有指定,默认是一个线程,也就是io_service run的那个线程,如果没有任务运行,该线程会退出。

       如果在创建的时候指定了线程数,那么io_service在执行的时候线程数就可以并发执行,如果你run的线程还是只有1个,那么io_service想多线程执行也没有条件,asio在内部是没有创建多线程的,所以这个时候需要你来手动创建多个线程执行io_service的run操作,这样才可以提高效率。顺便说下,worker辅助类可以保证ioservice一直run下去,直到调用stop,才会退出,这个是个很不错的用法。另外客户端异步模式是使用的select模型,会创建一些线程来实现异步的功能,所以在使用异步connect的时候,会asio会创建一定的线程数目。

          所以大家在使用asio的时候,想提高效率,那么一定要注意合适的线程数。还有别忘记使用worker类了。

时间: 2024-08-22 07:23:14

使用boost io_service时,需要注意的东西的相关文章

boost::io_service解读

boost::io_service解读 asio是boost提供的一个c++异步编程模型库,其核心类io_service,在多线程编程里面提供了任务队列和任务分发功能,在socket.io编程里主要作为一个事件驱动器(完成端口.select.poll.epoll等). 队列模型 每个io_service都一个公有任务队列,和多个私有任务队列,公有队列由各个线程共享,私有队列则是每个线程独享一个. io_service的任务执行流程大致如下: 调用run方法,进入主loop: 判断公有队列是否为空

c++-同时使用STLport和boost库时编译通过,但链接失败,求解决方案,急!!!

问题描述 同时使用STLport和boost库时编译通过,但链接失败,求解决方案,急!!! 具体问题是这样的: 我用的是vs2008,把STLport和boost库都加入项目,编译时报错:boostconfigauto_link.hpp(204): fatal error C1189: #error : "Build options aren't compatible with pre-built libraries" 解决方法是在 项目属性->c/c++->命令行 添加

vs2010 boost库 c2039-vs2010在调用boost库时出现以下错误 c2039

问题描述 vs2010在调用boost库时出现以下错误 c2039 f:项目参考资料steganalysis2_spamspam_windowssrcspam.cpp(177): error C2039: "leaf": 不是"boost::filesystem::directory_entry"的成员 1> f:softwarevs2010相关库oost_1_58_0oostfilesystemoperations.hpp(684) : 参见"bo

boost安装时(vc6.0),输入nmake-fvc6.mak后出现了问题,请求大神帮助

问题描述 boost安装时(vc6.0),输入nmake-fvc6.mak后出现了问题,请求大神帮助 do not konw allocator.hpp 这是怎么回事 解决方案 看不懂.......

Tomcat 6.1.0 final 调用EJB时需要配置那些东西?

问题描述 小弟初学J2EE,在使用Tomcat6.1.0final调用JBOSS的EJB时,总是报java.lang.NoClassDefFoundError:Couldnotinitializeclassorg.jnp.interfaces.NamingContext异常信息,不知道是环境没配好还是什么?在网上查过想关的配置信息,但大都是几年之前的老版本了.很多jar包都和之前的不同,希望各位大神指教! 解决方案 解决方案二:异常信息如下:javax.servlet.ServletExcept

boost在windows下的编译(vs2010)

首先说下环境,win7,vs2010. 先在http://www.boost.org/users/download/上下载boost安装包,我下的是1.52.0版. 按照说明,直接运行"bootstrap.bat",报"'cl'不是内部或外部命令"的错误,于是在环境变量中添加了cl.exe的路径--"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_ia64".再次运行&

时序列数据库武斗大会之什么是 TSDB ?

本文选自 OneAPM Cloud Insight 高级工程师刘斌博客 . 刘斌,一个才思敏捷的程序员,<第一本 Docker 书>.<GitHub 入门与实践>等书籍译者,Docker入门与实践课程主讲人. 时间序列数据库,Cloud Insight 实现对性能指标进行聚合.分组.过滤所采取的解决方案. 由于工作上的关系,最近看了一些关于时序列数据库的东西,当然,我所看的也都是以开源方案为主.趁着这股热劲还没退,希望能整理一些资料出来.如果正好你也有这方面的需求,那么希望这一系列

在生成创建的cordova项目时提示生成失败

问题描述 在生成创建的cordova项目时提示生成失败 在安装完Cordova后,创建的项目在生成时提示生成失败,输出信息如下图: 错误列表如下图: 哪位大神遇到过或知道的请尽快给予帮助啊!!先谢谢了! 另注:公司电脑没有外网,所以安装时都是下载的安装包离线安装的,在cmd中打node或你npm查看版本时也都可以输出信息,是不是在离线安装时缺少了什么东西?急! 另外,抱歉没有币了,没办法打赏了,请诸位大神帮帮忙!

Boost下载安装编译配置使用指南

转载:http://www.cppblog.com/jerryma/archive/2011/10/17/158554.html --更新于2011/7/19,目前我已对boost的安装和使用有了新的认识,因此也会对两年前写的这篇文章做大幅修改,网上转载版本泛滥,请以本文为准. 理论上,本文适用于boost的各个版本,尤其是最新版本1.47.0:适用于各种C++编译器,如VC6.0(部分库不支持),VS2003,VS2005,VS2008,VS2010,gcc,C++ Builder等.先总结一