Asio没有提升

时间:2013-04-18 12:03:49

标签: boost boost-asio

Asio是否仍然与Boost分开开发,或Boost.Asio是唯一仍在更新的版本?

Asio website他们谈到两个版本都有好处,而且Asio比Boost更新的频率更高。然而,该网站上最新的开发版本是2011年3月发布的1.5.3,而2013年2月发布的最新Boost 1.53包括Asio 1.8.3,自1.5.3以来发生了大量更改。

Asio网站在没有通知的情况下被放弃了,只支持Boost-only更新,或者它已移至我未找到的某个位置。有谁知道发生了什么事?

我问的原因是我试图从我的项目中删除Boost,而Boost.Asio是我目前使用的唯一Boost库。 Asio本身就是一个只有头文件的库,但是Boost.Asio还引入了其他几个未使用的Boost库(System,Regex,Date_Time)。

我愿意切换到另一个轻量级套接字库,但还没有找到一个与Asio一样好的(就低依赖性和使用本机平台的iocp / epoll方法而言)。

2 个答案:

答案 0 :(得分:6)

Asio是单独开发的,然后增强并合并到Boost.Asio中。但是,您可能无法根据正在使用的功能和编译器从项目中删除Boost。从Asio 1.10.0开始,Asio尝试使用等效的C ++ 11标准库而不是Boost。

Asio基本上是Boost.Asio:

  • 没有Boost命名空间和宏命名约定。
  • 不依赖于Boost.System和Boost.Thread,因为Asio提供了自己有限的功能来代替这两个库。

在1.10.0之前的Asio版本中可能存在Boost依赖关系。这些依赖关系通常在模板中引入;因此,依赖性可能仅在应用程序使用特定功能时发生。很容易忽略Asio and Boost.Asio页面上的细微细节,其中指出:

  

Asio仅限于头文件,大多数用途不需要链接任何Boost库。当使用C ++ 11和最新版本的gcc,clang或MSVC时,通过在编译时定义ASIO_STANDALONE,可以独立于Boost使用Asio。

通常,以下功能会引入依赖关系:

  • 定时器依赖于Boost.DateTime或Boost.Chrono。对于Asio 1.10.0及更高版本,将使用将使用std::chrono的C ++ 11版本。
  • 使用正则表达式的
  • read_until()操作取决于Boost.Regex。
  • Stackful coroutines基于Boost.Coroutine库。

值得考虑使用:

  • BCP提取项目所需的Boost库子集。
  • libuv,一个C库,提供异步事件循环和本机I / O事件通知的抽象。 This回答比较了两个库。

答案 1 :(得分:4)

我通过电子邮件询问了非升级版本的维护情况,作者Christopher Kohlhoff说他在github上保留了它

https://github.com/chriskohlhoff/asio

今天看着它似乎并不像1.8.3那样,或者至少它没有被标记,所以可能是他停止维护那个回购。

相关问题