小编Pav*_*rov的帖子

有没有办法显式销毁给定 boost::asio::io_context 上挂起的所有处理程序?

据我所知,就我检查了 boost::asio 文档和源代码而言,除了销毁上下文本身之外,没有办法明确销毁给定 io_context 上的所有挂起处理程序吗?

如果可能的话,我需要能够停止 io_context,销毁 io_context 上的挂起处理程序,然后做一些其他的事情,最后销毁与给定 io_context 和 io_context 本身关联的所有 io 对象(计时器、管道等)。

我知道我可以使用 work_guard::reset 并让所有挂起的处理程序运行,然后 io_context 将自行停止,但问题是许多处理程序可能会产生(post/defer/etc)新的挂起处理程序等,即每个这样的处理程序都需要用“如果停止”之类的东西来保护。

我认为 io_context::shutdown 正是这样做的,但是除了继承之外,没有办法显式调用关闭函数,因为它不是公开的。

谢谢。

c++ boost-asio

5
推荐指数
1
解决办法
2165
查看次数

标签 统计

boost-asio ×1

c++ ×1