boost::共享的ptr引用?

boost::共享的ptr引用?,boost,synchronization,boost-asio,shared-ptr,Boost,Synchronization,Boost Asio,Shared Ptr,我需要类似的东西: boost::shared_ptr<A> _class(...); //Start async operation boost::aiso::post(_class); _class.relase(); while(_class) // not working { LOG("Wait for aync operation to complete"); } boost::共享的ptr类(…); //启动异步操作 boost::aiso::po

我需要类似的东西:

boost::shared_ptr<A>  _class(...);

//Start async operation
boost::aiso::post(_class);

_class.relase();

while(_class)     // not working
{
   LOG("Wait for aync operation to complete");
}
boost::共享的ptr类(…);
//启动异步操作
boost::aiso::post(_类);
_类。relase();
当(_class)//不工作时
{
日志(“等待aync操作完成”);
}

是的,它是安全的,因为
post
复制它的参数(我猜你的意思是
io\u service\u.post()
)。 请参阅文档


但是在您调用
\u class.release()之后,
_class
将始终为
false
,因此
while(\u class)
将永远不会执行循环体。

您不能以这种方式等待异步操作完成。你的
帖子是什么?它会发布到另一个线程吗?@IgorR。这是正确的。您的问题意味着您实际上需要同步等待(这很容易实现)。这就是你想要的吗?是的,但我希望条件与共享的参考有关。同时,我用一个信号量实现了这一点,并解决了这个问题。