boost coroutine如何在aftercoro_t完成后检索函数返回值

时间:2014-05-15 10:12:16

标签: c++ boost coroutine

我使用boost :: coroutine调用非空函数,如

typedef boost::coroutines::coroutine< int(void) > coro_t;
typedef coro_t::caller_type Yield_target;

myClass* do_something(Yield_target& yield)
{
    myClass* m = new myClass;
    // ... do smt
    yield();
    // ... do smt
    return m;
}

然后我调用我的函数绑定它来提升协程。函数(协同程序)完成后如何获取myClass *的返回值?

1 个答案:

答案 0 :(得分:0)

您在问题陈述中提到的 coro_t :: caller_type 类型可能已弃用,因为它未在more recent Boost Documentation中展示。但是,在最近的文档中,here您可能会在 coroutine&lt;&gt; :: push_type 部分看到“您无法从此类其他执行上下文中检索值的短语协程“

虽然我不确定你打算如何使用couroutine库,但我怀疑你会比 coroutine&lt;&gt; :: pull_type <更频繁地使用 coroutine&lt;&gt; :: push_type / strong>,所以我猜你需要找到另一种方法来检索返回值,而不是库本身。