Boost更新包括基于协程的Asio使用、CMake集成的C++20模块支持原型、Boost.MySQL的性能基准和增强、Boost.Decimal集成,以及Postgres库的计划。
在Boost生态系统中,多个项目蓬勃发展。我在西班牙的C++大会上演讲,分享了编写高效异步Asio代码的经验。Boost 1.86引入C++20协程,显著提升性能。同时,我更新了Boost.MySQL,增加新特性并增强安全性,未来计划提交Postgres库。
尽管C++20的协程表现最佳,但并非总是可用。可以选择回调或有栈协程。asio库支持多种协程模式,但存在局限性。uasync库提供基于ucontext的超简协程,展示了proactor与有栈协程的结合。代码可读性对比显示有栈与无栈协程在使用上几乎无差异。
本文讨论了如何扩展Asio库以支持异步关闭socket功能。作者提出了两种实现方法:继承socket对象和创建全局函数。文章还介绍了操作系统对异步关闭的支持情况,以及如何实现io_uring_shutdown_service以完成异步操作,最后展示了如何在代码中使用扩展的async_shutdown函数。
文章讨论了beast::ssl_stream和beast::flat_stream的弃用,推荐使用asio::ssl::stream。协程示例已简化为asio::deferred,并新增模糊测试目标,增加了Boost.Http.IO协程客户端示例,同时Boost‑Gecko获得了学习索引。
文章讨论了Johan Berg如何基于Boost.Asio构建库,分享了他的经验和技术细节。Boost.Asio是一个用于网络和低级I/O编程的C++库。
文章讨论了Mohammad对Boost.Asio库的更新,涵盖了该库的最新进展和功能改进。
本文总结了Boost的工作进展,包括对Asio、Beast、URL和Requests的探索,维护Beast以支持1.84版本,参与b2模块化,实验constexpr词法分析器/解析器,并提出Asio教程的建议。
文章讨论了Boost.Asio属性系统,该系统用于处理异步输入输出操作,提升C++编程的效率和灵活性。
作者在开发以太坊的巧克力浏览器时遇到同步速度问题,最初使用geth同步,速度逐渐减慢,转向erigon后仍需10天。为提高效率,作者对代码进行了改进,采用协程并发调用,显著提升了同步速度。但数据库操作成为瓶颈,导致同步再次减慢。最终,通过分表和异步化数据库操作,解决了部分问题,预计在三月份完成同步。
这是上篇 那些年我们追过的网络库(PartI) 的后续, ASIO 腾空出世 在地球最大的岛上,另一位少年开始拜读 ACE 的大作。那时候,没有 libuv 没有 libev 更没有 libevent . 有的只是 ACE. 然而这个南方小国的少年没有跟风陷入 ACE 崇拜,他以敏锐的目光察觉到了 ACE 的弊病。 ACE 哪里做的不好?又哪里是值得借鉴的? 少年在给 c++...
前段时间看了 ASIO 爸爸关于ASIO的一个演讲. ASIO 爸爸说, ASIO 的设计理念就是作为一个 toolkit 而不是一个框架. ASIO并不强迫你使用某种编程模型. 它只是提供一系列的函数和类帮你更容易的编程. ASIO 的设计思想其实和 GLIB 的 g_main_loop 非常像. 但是 C++ 因为有模板, 所以能更好的实现. 使用 g_main_loop 的时候,...
avbot 是一个纯粹的单线程程序。在设计 avbot 最初的时候,我就给自己下了一个明确的目标:必须单线程。 但是,它的逻辑可不简单。它需要处理 XMPP 协议,处理 IRC 协议,处理 WebQQ 协议,处理pop3协议,处理 SMTP 协议。 所有的处理都必须异步。绝对不能因为 IO 阻塞。 可能很多人会不以为然,这有什么, select()...
完成下面两步后,将自动完成登录并继续当前操作。