scala - Scala中的并发 map /foreach

标签 scala concurrency functional-programming

我有一个迭代vals: Iterable[T]和一个长时间运行的函数,没有任何相关的副作用:f: (T => Unit)。现在,它以明显的方式应用于vals

vals.foreach(f)


我希望对f的调用可以同时进行(在合理范围内)。 Scala基础库中的某个地方有明显的功能吗?就像是:

Concurrent.foreach(8 /* Number of threads. */)(vals, f)


尽管f的运行时间相当长,但它足够短,以至于我不想为每个调用都调用线程而产生开销,因此我正在寻找基于线程池的东西。

最佳答案

我喜欢Futures答案。但是,尽管它将并发执行,但也会异步返回,这可能不是您想要的。正确的方法如下:

import scala.actors.Futures._

vals map { x => future { f(x) } } foreach { _() }

关于scala - Scala中的并发 map /foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1751953/

相关文章:

scala - 在 elastic4s 上找不到值索引错误

scala - 在 Akka-http 中主 Controller 之外完成请求

scala - 如何在 Scala 中启用延续?

java - 如何在不急于浪费内存的情况下将增量可变 Java 类包装在函数式 Scala 类中?

PostgreSQL - 实现可靠队列

javascript - 是否可以将 Lodash 数组方法与 es6 数组方法链接起来

MySQL 独占锁(FOR UPDATE)锁定整个表

java - 通过Spring调度一个java.util.concurrent.Callable意味着

haskell - 链完整的概念是什么?

c# - 等待来自 Language-ext 的 OptionAsync<T>