Scala似乎对Java有很多功能和改进。我很难分离出我想先学习Scala的东西。我应该在Google上寻找什么,例如,如果我只是想要循环并使它们在多个线程或进程上运行?我来自GPU计算背景,从中可以很容易得到如何让事情更快运行的高级视图。试图寻找专注于多线程的Scala教程
11
A
回答
21
Scala的并行收集是特别容易。并行化一个昂贵的操作
f(i)
在整数i <- 1 to 10
就是这么简单,(1 to 10).par.map(i => f(i))
斯卡拉将尝试分配一些工作线程比得上在系统中可用内核/处理器的数量。以下是一个视频,其中包含更多详细信息:http://days2010.scala-lang.org/node/138/140
Akka framework是一种成熟的,主要是基于actor的并发性方法,允许并行处理线程或远程进程。参与者基本上可以传递消息而不是共享状态的线程。新成立的公司Typesafe正在开发Scala语言和Akka。
您也可以尝试的Scala软件事务内存(STM)库的draft release。该库旨在包含在标准的Scala发行版中。与手动管理的线程相比,STM是一种更简单的并发模型,可降低死锁等错误的可能性。它通过将通信操作序列分组到一个单独的同步块中来工作,如果多个线程执行共享状态时会失败并回滚,结果是互不兼容。据推测,为了方便起见,付出一定的性能成本;我不确定STM如何扩展到大量的线程。
Spark framework解决了集群计算问题,似乎是MapReduce的泛化。
对于来自斯卡拉GPU编程,有ScalaCL。您也可以使用Java bindings。
还有正在做在斯坦福和洛桑联邦理工学院实验室的共同努力非常有趣的语言虚拟化的工作。 This page有链接到论文,并有一个course at Stanford与更多的链接。在异构计算环境(包括GPU)上开发用于高性能计算的DSL有几个令人兴奋的应用。
更新。 Daniel Sobral还建议Tools and Libraries wiki。
相关问题
- 1. 寻找OpenCV教程
- 2. 在线寻找OpenGL 3.1+教程
- 3. 寻找一些UI线程和工作线程教程
- 4. 寻找一个多面导航教程
- 5. 寻找一个XPCE教程
- 6. 寻找DES算法教程
- 7. 寻找一个Kinect教程
- 8. Android ExpandableListView - 寻找教程
- 9. 寻找多线程死锁的原因?
- 10. C++多线程教程
- 11. 多线程基本教程
- 12. 专注于小程序
- 13. 寻找一个好的Mootools Javascript教程
- 14. 寻找Java EE的视频教程
- 15. 寻找编写PHP模块的教程?
- 16. 试图专注于$ mdSideNav中的元素
- 17. 寻找一些关于切换视图和交叉视图通信的教程
- 18. 在iPhoneCoreDataRecipes上寻找教程应用
- 19. 寻找WCF basicHttpBinding https教程或示例
- 20. 寻找一个Android XML教程
- 21. 寻找教程,从经典ASP
- 22. 寻找Drupal网络形式教程
- 23. 在C/C++中寻找GD教程
- 24. 寻找贝宝付款教程
- 25. 寻找与jQuery MVC 3教程
- 26. 我在哪里可以找到关于iPhone/Objective-C多线程的好教程?
- 27. 关于在jdbc中使用多线程的教程
- 28. 寻求多维数组教程素材
- 29. 我在哪里可以找到多线程教程?
- 30. 面向对象的程序设计:寻找好的教程
感谢STM,不知道这一点。看起来很有希望。 –
这个答案实际上是FTW。你应该粘贴一个链接到库和工具wiki,尽管... –
@Daniel,更新,谢谢。 –