了解asio :: async_read行为

时间:2020-06-25 16:28:08

标签: boost asio

我继承了广泛使用asio::async_*方法与我的主项目集成的代码。在我的主要项目中,我使用io_context::post()来控制连接的调度和分配。

该应用程序是一个在无限循环中运行的客户端,具有到不同主机的数以万计的连接。

我想进一步了解asio::async_*的行为。我确实知道io_context::post()将工作项分派到系统,并在运行io_context::run()的线程上安排回调。

我的第一个想法是在该实例上简单地传递io_context.post(),但这对我来说似乎不是一个好的设计选择。

AFAIK,我无法使用asio::async_*方法来实现背压(如果我弄错了,请原谅我的无知,asio的文档不是最丰富的),这是为什么我试图将整个应用程序.post()设置为io_context,以便我可以控制我的机器而不进行DoS。

编辑:更新标题

1 个答案:

答案 0 :(得分:1)

您可以在connectasync_connect函数的示例中找到一个简洁但足以提供对 sync async 操作的理解的描述此处:Basic Boost.Asio Anatomy