译自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. 12DUILib经典教程(实例)

    Duilib经典实例教程:1基本框架:一个简单的Duilib程序一般是下面这个样子的:://Duilib使用设置部分:#pragmaonce:#defineWIN32_LEAN_AND_ME:#def ...

  2. 89 k数和

    原题网址:https://www.lintcode.com/problem/k-sum/description 描述 给定n个不同的正整数,整数k(k < = n)以及一个目标数字. 在这n个数 ...

  3. System.Web.Mvc.FileStreamResult.cs

    ylbtech-System.Web.Mvc.FileStreamResult.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutral, P ...

  4. iOS开发自定义转场动画

    1.转场动画 iOS7之后开发者可以自定义界面切换的转场动画,就是在模态弹出(present.dismiss),Navigation的(push.pop),TabBar的系统切换效果之外自定义切换动画 ...

  5. day 40 MySQL之视图、触发器、事务、存储过程、函数

    MySQL之视图.触发器.事务.存储过程.函数   阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上 ...

  6. C#Image和Icon的相互转化

    Image img = Image.FromHbitmap(icon.ToBitmap().GetHbitmap()); Graphics g = Graphics.FromImage(img); g ...

  7. Dmarc指定外域邮箱接收报告

    场景说明: 如果要将DMARC报告发送到记录所在的域以外,则接收域需要配置DNS记录,以便电子邮件服务提供商知道收件人指定报告授权. ================================= ...

  8. Js获取或计算时间的相关操作

    //获取当前日期(年月日),如:2017-12-18 function getNowDate() { var dd = new Date(); var y = dd.getFullYear(); // ...

  9. @Restcontroller与@controller区别

    @RestController注解相当于@ResponseBody + @Controller合在一起的作用. 1)如果只是使用@RestController注解Controller,则Control ...

  10. kuangbin带我飞QAQ 并查集

    1. POJ 2236 给出N个点,一开始图是空白的,两个操作,一个是增加一个点(给出坐标),一个是查询两个点间是否相通,当两点间的距离小于D或者两点通过其他点间接相连时说这两个点相通.并查集维护,每 ...