c++ - 从函数返回任务有什么好处?

标签 c++ task c++-cx ppl

我见过 create_task 有几种使用方式:

void Bob()
{
    create_task() { /* do stuff */ }.then([](){ /* do more stuff */ });
}

task<void> Bob()
{
    return create_task() { /* do stuff */ }.then([](){ /* do more stuff */ });
}

当使用任一方法都可以实现异步行为时,为什么还要返回任务(在第二个示例中)?

澄清:我不是专门询问 void 返回类型。它可以是一个 int、对象或其他东西。

最佳答案

void/task<void>这里是一个特例,因为你可以魔法 void不知从何而来。你不能对int做同样的事情。 , std::string或类似的。

void Bob()
{
    create_task() { /* do stuff */ }.then([](){ /* do more stuff */ });
}

返回后/* do stuff *//* do more stuff */已经开始,并且任何有关其进度的句柄都将被丢弃。

task<void> Bob()
{
    return create_task() { /* do stuff */ }.then([](){ /* do more stuff */ });
}

返回后/* do stuff *//* do more stuff */已经开始,并且您有一个句柄等待它们完成。

int Alice()
{
    return create_task() { /* do stuff */ }.then([](){ /* do more stuff */ return 42; }).get();
}

返回后/* do stuff *//* do more stuff */完成,并可得到最终结果。

task<int> Alice()
{
    return create_task() { /* do stuff */ }.then([](){ /* do more stuff */ return 42; });
}

返回后/* do stuff *//* do more stuff */已经开始,并且您有一个句柄来等待它们完成并获取结果。

关于c++ - 从函数返回任务有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49757517/

相关文章:

android - 在每天的特定时间调用方法

c# - 这是异步调用同步方法的正确方法吗?

plugins - 如何在gradle任务中获取传递依赖项的信息?

windows-8 - 如何使用 C++ 从资源图像为 Windows Metro 应用程序创建 WriteableBitmap?

c# - 本地部署和从应用商店部署时的不同应用行为

c++ - cv::Mat 或 CvMat* 中的大数据

c++ - 如何在宏中获取当前命名空间的字符串

C++前向声明问题

c++ - C++/CX 中 ^ 变量的含义

c++ - 改变RGBA颜色后OpenGL以16种颜色绘制