试图找到专注于多线程的Scala教程

smu*_*kes 11 java multithreading loops scala multiprocessing

Scala似乎比Java有很多功能和改进.我很难分离出我想先学习Scala的东西.如果我只想采取循环并让它们在多个线程或进程上运行,我应该在Google上寻找什么?我来自GPU计算背景,在这里可以非常简单地了解如何让事情变得更快.

Kip*_*ros 21

  • Scala的并行集合特别容易.并行化f(i)整数的昂贵操作i <- 1 to 10就像,

    (1 to 10).par.map(i => f(i))
    
    Run Code Online (Sandbox Code Playgroud)

    Scala将尝试分配许多与系统中可用的核心/处理器数量相当的工作线程.这是一个更详细的视频:http://days2010.scala-lang.org/node/138/140

  • 阿卡框架是一个成熟的,主要演员为基础的方法的并发,允许在并行线程或远程进程.Actor基本上是可以传递消息而不是共享状态的线程.新成立的公司Typesafe正在开发Scala语言和Akka.

  • 您还可以尝试Scala的软件事务内存(STM)库的草稿版本.该库旨在包含在标准的Scala发行版中.与手动管理的线程相比,STM是一种更简单的并发模型,可以减少诸如死锁之类的错误.它的工作原理是将通信操作序列分组为单个同步块,如果多个线程执行的共享状态变得互不兼容,则可能会失败并回滚.据推测,为方便起见需要付出一些性能成本; 我不确定STM如何扩展到大量线程.

  • 星火框架解决集群计算,并且似乎是MapReduce的一个概括.

  • 对于Scala的GPU编程,有ScalaCL.您还可以使用Java绑定.

  • 作为斯坦福大学和EPFL实验室之间的共同努力,还有非常有趣的语言虚拟化工作.这个页面有链接到论文,斯坦福大学有一个课程,有更多的链接.在包括GPU在内的异构计算环境中开发用于高性能计算的DSL有几个令人兴奋的应用程序.

更新.Daniel Sobral还建议使用工具和库维基.