通过函数参数传递boost.coroutine

时间:2013-11-18 15:56:32

标签: c++ boost boost-asio boost-bind

好吧,我的问题是将boost::coroutines::coroutine<std::string(void)>对象正确传递为函数参数。我不能通过引用来做到这一点,因为调用此方法是由boost::bindboost::asio实现的(此内存地址可能无效)。那么,有没有简单的方法呢?或者离开我的唯一方法是将这个对象打包成指针?

1 个答案:

答案 0 :(得分:0)

你可以让shared_ptr管理协程并将weak_ptr传递给bind()。在回调函数中,如果shared_ptr仍然有效,您可以通过weak_ptr进行检查:

shared_ptr< coroutine<...> > sp = wp.lock();
if (sp) {
...
} else {
// shared_ptr was released
}