译自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的情况)

Asio与Boost.Asio的更多相关文章

  1. BOOST.Asio——Overview

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  啥说的,鄙视那些无视版权随 ...

  2. boost.asio系列——Timer

    同步Timer asio中提供的timer名为deadline_timer,它提供了超时计时的功能.首先以一个最简单的同步Timer为例来演示如何使用它. #include<iostream&g ...

  3. boost::asio译文

        Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENS ...

  4. Boost.Asio技术文档

    Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_ ...

  5. boost.Asio lib

    Documentation for Boost.Asio http://www.boost.org/doc/libs/1_62_0/doc/html/boost_asio.html https://w ...

  6. boost::asio 学习

    安装 下载-解压 指定安装目录 ./bootstrap.sh --prefix=/usr/local/boost_1_68_0 查看所有必须要编译才能使用的库 ./b2 --show-librarie ...

  7. boost::asio::io_context类

    //有个疑惑: 向io_context对象中提交的任务只能被顺序化的执行. //下面这个构造函数表明可以运行多线程啊..... /** * Construct with a hint about th ...

  8. Boost.Asio 网络编程([译]Boost.Asio基本原理)

    转自:https://m.w3cschool.cn/nlzbw/nlzbw-3vs825ya.html Boost.Asio基本原理 这一章涵盖了使用Boost.Asio时必须知道的一些事情.我们也将 ...

  9. Boost.Asio基本原理(CSDN也有Markdown了,好开森)

    Boost.Asio基本原理 这一章涵盖了使用Boost.Asio时必须知道的一些事情.我们也将深入研究比同步编程更复杂.更有乐趣的异步编程. 网络API 这一部分包含了当使用Boost.Asio编写 ...

随机推荐

  1. 一个windows 两个jar

    设置两个子JAVA_HOME,一个总设置两个子JAVA_HOME:JAVA_HOME6 = C:\Program Files\Java\jdk1.6.0_43JAVA_HOME8 = C:\Progr ...

  2. 微信小程序 button 按钮所有默认的样式

    小程序默认样式 // 默认样式 button { position:relative; display:block; margin-left:auto; margin-right:auto; padd ...

  3. 反编译之paktool工具

    1.官网配置mac教程https://ibotpeaches.github.io/Apktool/install/ (1)右键选择:链接储存为(命名:apktool,格式:选择所有文件): (2)下载 ...

  4. Python2.7版本:定义类时为什么要继承object类?

    ********此答案摘自知乎,且经过自己实际运行后得出******** 继承 object 类的是新式类,不继承 object 类的是经典类 例子: 新式类: 经典类: B.C 是 A 的子类,D ...

  5. 《DSP using MATLAB》Problem 8.4

    今天是六一儿童节,陪伴不了家人,心里思念着他们,看着地里金黄的麦子,远处的山,高高的天 代码: %% ------------------------------------------------- ...

  6. 第一周——clone项目到本地

    公司使用的是git进行version control,代码托管在gitlab. 按照公司规范注册了gitlab账号, 漫长的等待clone到本地~ 然而,还是有问题,jar包下载不完全(公司网速dow ...

  7. 排列组合lucas模板

    //codeforces 559C|51nod1486 Gerald and Giant Chess(组合数学+逆元) #include <bits/stdc++.h> using nam ...

  8. 嘴巴题4 「BZOJ1827」[Usaco2010 Mar] gather 奶牛大集会

    1827: [Usaco2010 Mar]gather 奶牛大集会 Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来 ...

  9. Windows API 第21篇 DeleteVolumeMountPoint 删除挂载点

    函数原型:BOOL DeleteVolumeMountPoint(                                                      LPCTSTR lpszV ...

  10. [转]Visual Studio 2010单元测试(3)--顺序单元测试

    之前我们做的测试都是一个一个进行的,当然我们也可以一次性选择多个测试方法进行,但是测试运行的顺序以“测试列表编辑器”窗口中的默认列表顺序为准.在实际场景中,我们需要进行有顺序的单元测试,步骤可能每一步 ...