我继承了广泛使用asio::async_*
方法与我的主项目集成的代码。在我的主要项目中,我使用io_context::post()
来控制连接的调度和分配。
该应用程序是一个在无限循环中运行的客户端,具有到不同主机的数以万计的连接。
我想进一步了解asio::async_*
的行为。我确实知道io_context::post()
将工作项分派到系统,并在运行io_context::run()
的线程上安排回调。
我的第一个想法是在该实例上简单地传递io_context
和.post()
,但这对我来说似乎不是一个好的设计选择。
AFAIK,我无法使用asio::async_*
方法来实现背压(如果我弄错了,请原谅我的无知,asio
的文档不是最丰富的),这是为什么我试图将整个应用程序.post()
设置为io_context
,以便我可以控制我的机器而不进行DoS。
编辑:更新标题
答案 0 :(得分:1)
您可以在connect
和async_connect
函数的示例中找到一个简洁但足以提供对 sync 和 async 操作的理解的描述此处:Basic Boost.Asio Anatomy