ASIO库到底是不是要依赖于BOOST库?

时间:2022-02-06 08:17:59
ASIO网站上说ASIO库可以不依赖于BOOST,但下载了asio-1.2.0,发现里面的例子到处都在用boost::bind和boost::smart_ptr。
是不是我理解错了?*_*

Asio and Boost.Asio
Asio comes in two variants: (non-Boost) Asio and Boost.Asio. The differences between the two are outlined below.

What are the differences in the source code?
— Asio is in a namespace called asio::, whereas Boost.Asio puts everything under boost::asio::.
— The main Asio header file is called asio.hpp. The corresponding header in Boost.Asio is boost/asio.hpp. All other headers are similarly changed.
— Any macros used by or defined in Asio are prefixed with ASIO_. In Boost.Asio they are prefixed with BOOST_ASIO_.
— Asio includes a class for launching threads: asio::thread. Boost.Asio does not include this class, to avoid overlap with the Boost.Thread library
— Boost.Asio uses the Boost.System library to provide support for error codes ( boost::system::error_code and boost::system::system_error). Asio includes these under its own namespace ( asio::error_code and asio::system_error). The Boost.System version of these classes currently supports better extensibility for user-defined error codes.
—  Asio is header-file-only and for most uses does not require linking against any Boost library. Boost.Asio always requires that you link against the Boost.System library, and also against Boost.Thread if you want to launch threads using boost::thread.

7 个解决方案

#1


那是例子,不是库。

#2


早期的确实不依赖。
asio的技术里,应该用到了functor,bind,system time,thread.
因为用的到functor,bind并不麻烦,因此可以自己实现
time更没难度,thread类在内部用,又不是接口,所以也不用管了。
其实asio可以用signal的。 而且,我好像没有注意到asio用到小对象分配器呢,
这么多小对象,没内存碎片么。。。
(反正我是重写一个,不用这个,这个又大又乱)

#3


asio肯定要使用thread的。不用boost的就需要asio包里带了相同功能的库(甚至可能直接就包了个最小化的boost)。
所以,用不用boost,又有啥实质区别呢。

#4


主要用到BOOST库的程序编译起来太慢了,所以当然是能不用就不用咯。

#5


引用 4 楼 DDGG 的回复:
主要用到BOOST库的程序编译起来太慢了,所以当然是能不用就不用咯。

貌似boost大多数都不需要编译吧?

#6


引用 5 楼 fallening 的回复:
引用 4 楼 DDGG 的回复:
主要用到BOOST库的程序编译起来太慢了,所以当然是能不用就不用咯。 
 
貌似boost大多数都不需要编译吧?


我说的意思是只要#include <boost/xxx.h>,整个程序的编译速度就会变慢,尤其是用到 boost::signal 的时候。
另外boost的很多库都要编译出lib才能用,象boost::asio需要用到的boost::system、boost::thread、boost::regex、boost::date_time统统都需要编译出lib才能使你的程序成功完成链接。

#7


预编译技术就能解决这个编译慢的问题,为什么不用啊

#1


那是例子,不是库。

#2


早期的确实不依赖。
asio的技术里,应该用到了functor,bind,system time,thread.
因为用的到functor,bind并不麻烦,因此可以自己实现
time更没难度,thread类在内部用,又不是接口,所以也不用管了。
其实asio可以用signal的。 而且,我好像没有注意到asio用到小对象分配器呢,
这么多小对象,没内存碎片么。。。
(反正我是重写一个,不用这个,这个又大又乱)

#3


asio肯定要使用thread的。不用boost的就需要asio包里带了相同功能的库(甚至可能直接就包了个最小化的boost)。
所以,用不用boost,又有啥实质区别呢。

#4


主要用到BOOST库的程序编译起来太慢了,所以当然是能不用就不用咯。

#5


引用 4 楼 DDGG 的回复:
主要用到BOOST库的程序编译起来太慢了,所以当然是能不用就不用咯。

貌似boost大多数都不需要编译吧?

#6


引用 5 楼 fallening 的回复:
引用 4 楼 DDGG 的回复:
主要用到BOOST库的程序编译起来太慢了,所以当然是能不用就不用咯。 
 
貌似boost大多数都不需要编译吧?


我说的意思是只要#include <boost/xxx.h>,整个程序的编译速度就会变慢,尤其是用到 boost::signal 的时候。
另外boost的很多库都要编译出lib才能用,象boost::asio需要用到的boost::system、boost::thread、boost::regex、boost::date_time统统都需要编译出lib才能使你的程序成功完成链接。

#7


预编译技术就能解决这个编译慢的问题,为什么不用啊