【发布时间】:2018-03-06 03:19:06
【问题描述】:
在 Scala 2.11.8 中,我使用 par 来并行化一个大而冗长的 foreach。我也在尝试优化代码以避免每次都创建对象的新实例,因此我需要使用DynamicVariable。但是,我注意到仍然创建了许多此类的实例,这使我认为par 总是跨越新线程而不是重用它们。因此,OP 如何让有限的可重用线程池中的线程消耗掉?这可能吗?
for (k <- 0 until 5) {
// avoid creating instances of PearsonsIncCorr
val inc = new DynamicVariable[PearsonsIncCorr](new PearsonsIncCorr)
elems.par foreach { pair => // <======= Here I'd like par to consume from a Thread pool
inc.withValue(new PearsonsIncCorr) {
inc.reset(...)
// compute incremental correlation
}
}
}
【问题讨论】:
标签: scala concurrency threadpool thread-local