Scala 似乎比 Java 有很多特性和改进。我很难把我想首先学习的关于 Scala 的东西隔离开来。例如,如果我只想采用 for 循环并使它们在多个线程或进程上运行,我应该在 Google 上寻找什么?我来自 GPU 计算背景,从中可以很容易地获得关于如何让事情运行得更快的高级 View 。
最佳答案
Scala 的并行集合特别简单。并行化昂贵的操作
f(i)
在整数上i <- 1 to 10
就这么简单,(1 to 10).par.map(i => f(i))
Scala 将尝试分配与系统中可用的内核/处理器数量相当的工作线程数。这是包含更多详细信息的视频:http://days2010.scala-lang.org/node/138/140
Akka framework是一种成熟的、主要基于参与者的并发方法,允许在线程或远程进程上并行化。 Actor 基本上是可以传递消息而不是共享状态的线程。新成立公司Typesafe正在开发 Scala 语言和 Akka。
您也可以尝试 draft release Scala 的软件事务内存 (STM) 库。该库旨在包含在标准 Scala 发行版中。与手动管理的线程相比,STM 是一种更简单的并发模型,可减少出现死锁等错误的可能性。它的工作原理是将通信操作序列分组到单个同步块(synchronized block)中,如果多个线程使用共享状态执行某些操作,结果证明相互不兼容,则该同步块(synchronized block)可能会失败并回滚。据推测,为了方便需要付出一些性能成本;我不确定 STM 扩展到大量线程的效果如何。
Spark framework解决集群计算问题,似乎是 MapReduce 的推广。
对于 Scala 的 GPU 编程,有 ScalaCL .您还可以使用 Java bindings .
还有一项非常有趣的语言虚拟化工作正在斯坦福大学和 EPFL 的实验室之间共同努力。 This page有论文链接,还有一个course at Stanford有更多链接。在异构计算环境(包括 GPU)上开发用于高性能计算的 DSL 有多种激动人心的应用。
更新。 Daniel Sobral 还建议 Tools and Libraries wiki .
关于java - 试图找到专注于多线程的 Scala 教程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7162715/