我有一个迭代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/