从函数返回任务有什么好处
What are the benefits of returning a task from a function?
我见过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 */
开始,您有一个句柄等待它们完成并获得结果。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- c++库的公共头文件中应该包含什么
- 为什么我在启动任务时收到成功代码,但它什么也不做?
- 从函数返回任务有什么好处
- 新任务中以前的数据会发生什么变化
- 在PPL任务中进行构造的目的是什么?
- 数组中元素的前置任务是什么?我如何找到它
- 什么可能会延迟 VxWorks 任务的抢占
- 任务杀死实用程序的退出代码是什么
- 终止Qt进程:Windows任务管理器在做什么,我没有?
- 触发异步任务并忘记它的C++ 11 种方法是什么?
- 堆大小(由 umdh 报告)和(私有)工作集(由任务管理器报告)之间的差异的原因是什么