问题标签 [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.
c++ - std::async - std::launch::async | std::launch::deferred
我了解std::async
以下参数的作用。
std::launch::async
std::launch::deferred
但是,会发生什么std::launch::async | std::launch::deferred
?
java - 异步请求中的线程状态
我想知道当我进行 @async 调用并在 Future 类型字段中检索值时,线程在 spring 中会发生什么。同时线程是否空闲?
在此先感谢,冈萨。
java - Future.cancel(boolean) 方法的实用程序
我只是在探索 java.util.concurrent 包。
我了解到“ Future ”类有一个方法boolean cancel(boolean mayInterruptIfRunning)
请附上我写的测试代码:
最初,我假设取消任务也会停止正在运行的线程的执行(不包括“OUCH”部分)。但我得到的输出如下:
在进一步阅读stackoverflow本身时,据说
- 'cancel' 方法只能停止 'unstarted' 作业(与方法的 api 描述相矛盾)
- cancel 方法只是中断正在运行的线程,然后该线程必须从 run() 方法返回
因此,我包括了 'OUCH' 部分 - 一个 while 循环检查中断;输出如下:
问题 :
如果应该编写类似于“OUCH”部分的内容来停止正在运行的线程,那么取消方法的实用程序/价值是什么。如果无法通过取消来停止线程,将 Callable 包装在 FutureTask 中有何帮助?我忽略的设计/概念/逻辑部分是什么?
scala - 使用 Akka Futures 生成并行随机数
我正在编写一个使用 Akka 2 Futures 构建的 CPU 密集型应用程序。我目前不需要演员,但我并不不愿意使用它们。
包含在期货中的一些计算必须经常调用随机生成器。我担心如果我使用经典的并发 RNG,它会成为一个瓶颈,我会失去可扩展性。
中每个线程都有一个随机生成器的最快速/最简单的方法是ExecutionContext
什么?
有没有办法用不同的种子(但事先知道)初始化它们,比如重复实验?
java - 即使任务完成,future.isDone 也会返回 false
我有棘手的情况,是否future.isDone()
返回false
,即使线程完成。
如果我称它为future.isDone()
返回值false
,则coundownLatch.await()
返回 true。任何想法?另请注意,发生这种情况时 countDownLatch.await 会立即出现。
如果您在此处发现格式不可读的视图,请访问http://tinyurl.com/7j6cvep。
c# - C# async 和 Java ExecutorService 的区别
C# 有一个很酷的新特性
但这不等于
在 Java 中,您可以更灵活地选择任务将在其中运行的线程池。
等待呢?相当于只调用get
就像
C# 是否还有更多内容,或者它确实只是 Java 版本的语法糖?(我不是 C# 大师,所以我可能会遗漏一些东西)。
java - 奇怪的 Java 线程池行为 - 除非使用 Futures,否则会丢失任务
我正在创建一个线程池,因为我不需要线程的任何输出,所以我没有使用 Futures&Callables。但问题是,如果我不使用 Futures,我会看到线程池正在丢失我正在提交的任务。
这是我失去任务的代码结构-
在 Worker() 中,我在 run() 实现的第一行打印“得到工作”。
当我运行上面的代码时,“得到工作”的数量总是少于“提交的工作”。
但是,当我将代码结构更改为以下 -
然后我看到“得到工作”的次数等于“提交的工作”
这让我相信,除非我使用 Futures&Callables,否则线程池正在使用我正在提交的任务。
你以前见过这样的行为吗?有没有更好的方法来调试这个?
scala - Akka future.await 超时时不返回
我是 Akka 的新手,在 Akka 1.2 中调用 Future.await 时遇到问题。我已经创建了一些带有 OnTimeout 和 OnException 处理程序的 Futures,然后我正在等待它们完成。代码看起来像这样:
当出现异常时,异常处理程序被执行,然后我进入“Got here”行。但是,当超时时,虽然超时处理程序被执行,但我永远不会到达“到达这里”行。即使设置了 AtMost 值,await 也不会返回。
这可能是什么原因造成的?
c++ - for 循环/for_each 的每个迭代可以并行完成吗?(C++11)
我正在迭代结构向量并单独处理每个结构。
它看起来像这样:
代码非常慢,因为 DoTask 连接到特定网站并分析 HTML。
加快速度的最佳方法是什么?
我的目标是同时分析多个 DataT。
我对线程很陌生,但std::async和std::future看起来很有希望。
c++ - 用自己的版本替换 std::async 但 std::promise 应该在哪里生活?
我正在使用 vc2011,结果发现 std::async(std::launch::async, ... ) 有点错误(有时它不会产生新线程并并行运行它们,而是重用线程和一个接一个地运行任务)。当我进行昂贵的网络调用时,这太慢了。所以我想我会编写自己的异步函数。我被卡住了,std::promise 应该在哪里生活?在 1) 线程函数、2) 异步函数或 3) 调用函数中。
代码:
我似乎无法理解 std::promise 需要比 async 函数寿命更长(并且与线程一样长)的事实,因此 promise 不能作为 async func 中的局部变量存在。但是 std::promise 也不应该存在于调用者代码中,因为调用者只需要了解期货。而且我不知道如何在线程函数中实现承诺,因为异步需要在调用线程函数之前返回一个未来。我在这个问题上摸不着头脑。
有人有什么想法吗?
编辑:我在这里强调这一点,因为顶部评论有点误导。虽然允许 std::asycn 的默认值是 dererred 模式,但当显式设置 std::launch::async 的启动策略时,它必须表现得“好像”线程立即产生并运行(参见 en 中的措辞.cppreference.com/w/cpp/thread/async)。请参阅 pastebin.com/5dWCjjNY 中的示例,以了解这不是 vs20011 中所见行为的一种情况。该解决方案效果很好,并将我的实际应用程序加速了 10 倍。
编辑 2:MS 修复了这个错误。更多信息在这里:https ://connect.microsoft.com/VisualStudio/feedback/details/735731/std-async-std-launch-async-does-not-behave-as-std-thread