【问题标题】:Passing boost.coroutine through function arguments通过函数参数传递 boost.coroutine
【发布时间】:2013-11-18 15:56:32
【问题描述】:

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

【问题讨论】:

  • 请在您的问题中添加一些代码

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2020-07-12
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多