【发布时间】:2021-11-07 12:34:20
【问题描述】:
有没有一种简单的方法来确定等待特定 Boost ASIO 链的完成处理程序的数量?我知道,该数字仅在多线程环境中是近似的,因为它总是会发生,完成处理程序在该计数器被查询后的纳秒内完成,但在计数器返回之前。或者,同样地,其他线程可以在查询计数器后将新工作发布到该链。
但是这样一个大概的数字对于我的应用来说已经足够了。
我知道,我可以在我的应用程序中添加一个std::atomic<std::size_t> 变量,每当有内容发布到链时,该变量就会递增,并且由每个完成处理程序递减,该变量会在该链中执行。但是对于有时会被取消的计时器和有时会意外关闭的异步套接字,我很担心这种基于应用程序的计数器很容易不同步。那么,有没有一种简单的方法可以“询问 ASIO 本身”,有多少工作正在等待特定的链?
【问题讨论】:
标签: c++ multithreading asynchronous boost-asio