问题标签 [std-future]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
39 浏览

c++ - 并非所有 std::packaged_tasks 在 std::async 调用中执行

我有一个相当复杂的代码,其中包含std::async调用和std::packaged_task,但无法执行到最后。我将其简化为最小的可重现示例。

两个 async 函数一个接一个地被调用,其中有 packaged_tasks 使用std::async. future.wait()然后我们都使用相应的方法等待两个异步函数完成。执行停止在futY.wait();并且第二个packaged_task永远不会执行(没有第二个Inside handler func日志)。

日志如下:

您能否解释一下为什么代码直到最后才执行?

0 投票
1 回答
73 浏览

c++ - C++ 不能为在 lambda 中捕获的 promise 调用 set_value?

我正在尝试编写一个返回未来的相当简单的方法。一个 lambda 设定了未来。这是一个最小的例子。实际上,lambda 可能会在不同的线程中调用,等等。

出于某种原因,我收到类型错误。VSCode 智能感知 说:

没有重载函数的实例 " std::promise<_Ty>::set_value [with _Ty=std::error_code]" 匹配参数列表和对象(对象具有阻止匹配的类型限定符) -- 参数类型是: ( std::remove_reference_t<std::error_code &>) -- 对象类型是:const std::remove_reference_t<std::promise<std::error_code> &>

MSVC 编译器说:

错误 C2663:“ ”:2 个重载对“ ”指针std::promise<std::error_code>::set_value没有合法转换this

我真的不明白 VS Code 错误。是说它认为error是一个const promise<error_code>?如何正确调用lambda 捕获中的 dset_value承诺?move

0 投票
3 回答
87 浏览

c++ - std::future 用简单的话来说?

我在用std::futureC++ 编写的程序中看到了 的用法。所以,我很快就去查找什么是:std::future并得到了一个相当复杂的答案。

有人能用简单的话来形容一个 6 岁的孩子吗?我有一个6岁孩子的理解水平......

一个带有最小用例的小定义对我有用。如果问得太多,请告诉我,我会收回我的问题。

0 投票
0 回答
44 浏览

c++ - 代码流能否在未来的 get 方法返回之前继续前进?

是否有可能"Main end"在所有result.get();返回到下面的代码片段之前显示(在任何情况下)?

"Main end"将永远是最后一个出现?

0 投票
0 回答
43 浏览

c++ - 为什么打包的任务在抛出系统错误后终止?

我不确定为什么下面的代码在此处的在线编译器中运行时会引发运行时异常。我正在尝试通过打包任务执行功能

我得到的错误是