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。这是正确的。您的问题意味着您实际上需要同步等待(这很容易实现)。这就是你想要的吗?是的,但我希望条件与共享的参考有关。同时,我用一个信号量实现了这一点,并解决了这个问题。