当前位置: 首页 > 工具软件 > Ascs > 使用案例 >

ascs 简明开发教程(二十五):关于standalone asio 停更

焦兴为
2023-12-01

社区:198941541

从 Asio 1.25 开始,standalone asio 版本将不再更新,为此ascs只能换到依赖Boost.Asio,于是从ascs 1.8版本开始,它将不再依赖standalone asio。那么当我们升级到ascs 1.8之后,需要一些代码上的改动及注意事项,我总结如下:

一:原来asio::xxxx的地方,需要改成boost::asio::xxxx(除了如下第二点),比如asio::io_context。

二:原来asio::error_code的地方,需要改成boost::system::error_code。

三:原来使用asio宏的地方,比如ASIO_CONCURRENCY_HINT_SAFE,现在需要改成BOOST_ASIO_CONCURRENCY_HINT_SAFE。

四:原来不定义宏ASCS_USE_STEADY_TIMER的话,将使用system_timer,否则使用steady_timer,现在和st_asio_wrapper库一样,你需要显示定义ASCS_USE_SYSTEM_TIMER以使用system_timer,当两者都不定义的时候,将使用deadline_timer。

五:ascs仍然需要c++0x的支持,因为c++0x的加持,ascs可以做到尽量的减少对Boost的依赖,它不会依赖任何需要编译的Boost库(比如thread和system库),所以下载解开Boost库即可使用,和使用standalone asio一样方便。

六:1.8版本的ascs库,虽然是从Boost 1.81开始的,但在老的Boost版本上仍然可用,只要不是太老,另外你可能仍然需要编译Boost.system库。

七:得益于Boost,ascs 1.8也支持了websocket和ssl websocket,原来的ascs不支持是因为没有standalone的Beast库,只有Boost.Beast。

八:那么现在ascs与st_asio_wrapper库的区别,就仅仅是一个需要c++0x,一个不需要(但至少c++98)。另外ascs库即便在依赖Boost的情况下,编译和运行效率仍然是高于st_asio_wrapper库的,特别是编译效率,原因是ascs用了大量的c++0x features,比如lambda,其编译效率大大优于boost的bind和lambda。

上一篇 ascs 简明开发教程(24)

 类似资料: