Boost 正在等待异步操作的完成

Boost 正在等待异步操作的完成,boost,boost-asio,Boost,Boost Asio,大家好 有一个io_服务对象,方法run()在线程池中工作。 有一组类使用ip::tcp::socket进行异步写入。 我需要阻止这种类的析构函数,直到他的任务位于io_服务的队列中。 在示例中,添加方法join()。但是阻止析构函数的原因是什么呢?我不确定是否正确理解了您的问题,但听起来您想确保等待未完成异步操作的类在操作完成之前不会被销毁 该习语可用于此目的,并在中进行了演示。如果您查看tcp_connection::start,您会看到该类如何将共享的_ptr传递给自身,以绑定为异步操作的

大家好

有一个io_服务对象,方法run()在线程池中工作。 有一组类使用ip::tcp::socket进行异步写入。 我需要阻止这种类的析构函数,直到他的任务位于io_服务的队列中。
在示例中,添加方法join()。但是阻止析构函数的原因是什么呢?

我不确定是否正确理解了您的问题,但听起来您想确保等待未完成异步操作的类在操作完成之前不会被销毁

该习语可用于此目的,并在中进行了演示。如果您查看tcp_connection::start,您会看到该类如何将共享的_ptr传递给自身,以绑定为异步操作的处理程序。

如下所示:


谢谢大家。

“竞争”或“完成”?@niXman:如果您在指定异步写入处理程序时使用来自\u this()的共享\u,则无需担心析构函数中的阻塞问题。共享的\u ptr将管理上下文类的生存期。我不会在这些对象死的时候安装。我需要在析构函数中捕捉所有异步操作完成的时刻。这个问题是这样解决的: