Asio没有提升

Nai*_*rou 7 boost boost-asio

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

Asio网站上,他们谈到两个版本都有好处,而且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方法方面).

Tan*_*ury 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和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.
  • 基于Boost.Coroutine库的堆栈协程.

可能值得考虑使用:

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


小智 5

我通过电子邮件询问了非增强版本的维护位置,作者克里斯托弗·科尔霍夫(Christopher Kohlhoff)说他在github上维护了该版本。

https://github.com/chriskohlhoff/asio

今天看它似乎不存在1.8.3,或者至少它没有被标记,所以可能是他停止了维护该仓库。