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

克雷格

我看过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,object或其他东西。

卡雷斯

void/task<void>在这里是一种特殊情况,因为您可以void从任何地方进行魔术操作你不能做一个相同intstd::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 */开始执行此操作后,您将有一个句柄等待它们完成并获取结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

立即将函数返回给函数有什么好处?

将异步放在返回promise的函数中有什么好处?

与返回函数(处理函数)的处理函数进行反应-使用该函数有什么好处?

用自调用函数导出函数比直接返回函数有什么好处

TearDown()和Setup()函数有什么好处?

使用复制构造函数有什么好处?

使用S型函数有什么好处?

返回另一个类的成员的属性而不是在构造函数中设置该属性有什么好处吗?

在indexOf(...)中返回-1而不是null有什么好处?

Collections.singleton()返回Set而不是Collection有什么好处?

什么类型的返回类型对我的模拟接口列表有好处

将指向数组的指针传递给函数有什么好处?

使用fromValue函数代替java枚举valueOf有什么好处?

嵌套函数有什么好处(通常/在Swift中)

在C ++中的类外部声明函数有什么好处?

Angularjs中的指令模板函数有什么好处?

在VBA中使用StrPtr函数有什么好处和风险?

创建构造函数后使用原型有什么好处?

在ready而不是call函数上使用jquery有什么好处

将引用定义为函数调用 - 有什么好处?

在 Jest 中使用 beforeEach 函数有什么好处

使用SafeFileHandle和FileStream构造函数有什么好处

MapEntry类中的工厂构造函数有什么好处?

在 render 方法中调用 SFC 函数有什么好处吗?

在函数的开头声明变量有什么好处吗?

JCA有什么好处?

$有什么好处?猛扑

HQL有什么好处?

Scala有什么好处?