译自http://think-async.com/Asio/AsioAndBoostAsio

Asio有两种变体:(非Boost)Asio和Boost.Asio。本文概要描述二者的不同。

1. 源代码的差别

  • Asio位于名字空间asio::中,而Boost.Asio则位于boost::asio::中。

  • Asio的主要头文件是asio.hpp,而Boost.Asio的则是boost/asio.hpp,所有其他头文件作了类似的改动。

  • Asio使用或者定义的宏有前缀ASIO_,而Boost.Asio中宏的前缀则是BOOST_ASIO_。

  • Asio含有启动线程的类asio::thread,Boost.Asio没有这个类,以免与Boost.Thread库功能重叠。

  • Boost.Asio使用Boost.System库提供错误码支持(boost::system::error_code和boost::system::system_error),Asio则将其包含在自己的名字空间中(asio::error_code和asio::system_error)。Boost.System版本的这些类当前能够更好地支持用户定义的错误码。

  • Asio只有头文件,多数情况下不需要链接任何Boost库,而Boost.Asio总是要求链接Boost.System库,如果要使用boost::thread启动线程,则还要链接Boost.Thread库。

2. 从哪里获取发布包?

Asio可以从SourceForge下载,包名是asio-X.Y.Z.tar.gz(或者.tar.bz2,或者.zip)。

Boost.Asio包含在Boost 1.35发布版中。也可以从SourceForge下载名字为boost_asio_X_Y_Z.tar.gz的单独包。应该把下载的包复制到已有的Boost源代码发布中。

3. 源代码库在哪里?

Asio使用sourcforge中的CVS仓库。关于如何访问CVS仓库的细节请看这里,仓库也可以通过Web浏览。

Boost.Asio的源代码在Boost的SVN代码仓库中。

4. 两个版本是如何维护的?

所有的开发都在Asio的CVS仓库中进行。源代码被定期地通过boostify.pl脚本转换成Boost格式,然后将改动合并到Boost的SVN仓库中。

5. 现在Boost已经包含Boost.Asio,Asio会不再更新吗?

不会,使用Asio的项目会被持续支持。

6. 应该使用Asio还是Boost.Asio?

这取决于各方面的考虑:

  • 如果你选择只有头文件的便利性,则建议使用Asio,而不是Boost.Asio。

  • 如果必须使用1.35版本之前的不包含Boost.Asio的Boost,可以将Boost.Asio复制到Boost发布版本中,但有些人可能不习惯这样做。如果是这样,建议使用Asio,而不是Boost.Asio。

  • Asio和Boost.Asio的新版本发布周期比Boost短。如果想使用最新的特征,只要将Boost.Asio复制到Boost发布版本中就可以了。如果不想这么做,使用Asio就是了。

7. Asio和Boost.Asio可以共存于一个程序中吗?

可以。虽然类型本身显然是不可互换的,但是二者使用不同的名字空间,应该不会有冲突。(如果想知道为什么需要这样做,考虑下程序使用第三方库,而第三方库在内部使用Asio的情况)

最新文章

  1. Collection集合
  2. apache2.4 windows764 python cgi
  3. Bash中的任务(job)管理
  4. des加密解密的两个方法
  5. beta2阶段组员分数分配
  6. Unity重力的测试
  7. The Daligner Overlap Library
  8. 转载:Hadoop权威指南学习笔记
  9. struts2.1笔记04:struts2优点
  10. 算法-最长子序列和C/C++实现(三个复杂度)
  11. CSS小记(持续更新......)
  12. hdu-3790-最短路径问题(dijkstra算法)
  13. Swift学习之构造方法
  14. 201521123106《java程序设计》第一周学习总结
  15. 用shell脚本新建shell文件并自动生成头说明信息
  16. Codeforces A. Trip For Meal
  17. Scrum Meeting Alpha - 9
  18. PHP中文网上的无限极分类
  19. 异步、+回调机制、线程queue、线程Event、协程、单线程实现遇到IO切换
  20. git与eclipse集成之导入组件到Eclipse工程

热门文章

  1. Python3基础笔记_迭代器
  2. CPU的load和使用率傻傻分不清(转)
  3. HTML 项目符号
  4. Spring MVC(七)--传递JSON参数
  5. Spring注解驱动(上)
  6. PKU_3624(0-1背包)
  7. 设置listContrl中指定行的颜色
  8. Python学习之--python概要
  9. 【心无旁骛】vuex-simple
  10. Android 开发 Camera2开发_3_处理预览和拍照偏暗问题