如何从结果创建并发:: task?

时间:2014-07-06 16:19:55

标签: c++ c++11 task ppl

我想创建一个已从给定结果中完成的新任务。我目前的解决方法是:

return concurrency::task<T>([]{return result;});

有什么更好的吗?

问题在于以下代码:

concurrency::task<bool> foo()
{
    if (smth)
        // the result is 
        return (foo_other() && foo_other2()).then([](std::vector<bool> results) {...});

    //return false;
    return concurrency::task<bool>([]{return false;});
}

如您所见,我的函数是异步的,它依赖于另一个异步函数。但有时我可以退出应用程序,例如如果异步任务已经完成。在这种情况下,我需要返回一个可持续的任务,该任务返回指定的结果。

1 个答案:

答案 0 :(得分:6)

您可以按如下方式创建已完成的任务:

concurrency::task_from_result<bool>(false);