Scala 菜鸟在这里:
val pv = (1 to 100).toArray.par
现在我想对这个并行集合应用一个映射函数 pv
pv.map(_ * 2)
但是,上述操作挂起。有什么理由吗?
2.12.4在 Mac OS X (High Sierra) 上使用 Scala 版本
似乎这是由静态初始化程序死锁引起的,请参阅:
https://github.com/scala/scala-parallel-collections/issues/34
这个问题在repl 中指出,当创建并行集合时,repl 会为其生成一个包装器,当 init 时,它会导致死锁。
它也可以从以下程序中复制:
https://github.com/scala/bug/issues/8119
object Foreacher {
val n = 0
val m = List(1).par.foreach(_ => n)
def main(args: Array[String]): Unit = println("Hello, all")
}
Run Code Online (Sandbox Code Playgroud)