2011-08-23 38 views
11

Scala dường như có rất nhiều tính năng và cải tiến so với Java. Tôi gặp khó khăn khi cô lập những thứ tôi muốn học đầu tiên về Scala. Tôi nên tìm kiếm điều gì trên Google nếu tôi chỉ muốn, ví dụ, thực hiện các vòng lặp và làm cho chúng chạy trên nhiều luồng hoặc quy trình? Tôi đến từ một nền tảng máy tính GPU, nơi thực sự đơn giản để có được cái nhìn cấp cao về cách làm cho mọi thứ chạy nhanh hơn.Cố gắng tìm hướng dẫn Scala tập trung đa luồng

Trả lời

21
  • Scala's Bộ sưu tập song song đặc biệt dễ dàng. Parallelizing một hoạt động tốn kém f(i) trên nguyên i <- 1 to 10 cũng đơn giản như,

    (1 to 10).par.map(i => f(i)) 
    

    Scala sẽ cố gắng phân bổ một số chủ đề công việc mà có thể so sánh với số lượng các lõi/chế biến sẵn trong hệ thống của bạn. Dưới đây là video có thông tin chi tiết hơn: http://days2010.scala-lang.org/node/138/140

  • Akka framework là phương pháp tiếp cận chủ yếu dành cho người trưởng thành, đồng thời cho phép song song các chủ đề hoặc quy trình từ xa. Các diễn viên về cơ bản là các chủ đề có thể truyền thông điệp hơn là chia sẻ trạng thái. Công ty mới thành lập Typesafe đang phát triển cả ngôn ngữ Scala và Akka.

  • Bạn cũng có thể thử một draft release thư viện bộ nhớ giao dịch phần mềm (STM) cho Scala. Thư viện đang hướng đến việc đưa vào phân phối Scala tiêu chuẩn. So với các luồng được quản lý theo cách thủ công, STM là một mô hình đồng thời đơn giản hơn, làm giảm khả năng xảy ra lỗi như khóa chết. Nó hoạt động bằng cách nhóm các chuỗi các hoạt động truyền thông thành một khối được đồng bộ hóa duy nhất có thể thất bại và quay trở lại nếu nhiều luồng làm điều gì đó với trạng thái chia sẻ hóa ra là không tương thích lẫn nhau. Có lẽ có một số chi phí hiệu suất để trả tiền để thuận tiện; Tôi không chắc chắn STM cân đối như thế nào với số lượng lớn các luồng.

  • Spark framework địa chỉ tính toán cụm và dường như là sự khái quát hóa MapReduce.

  • Để lập trình GPU từ Scala, có ScalaCL. Bạn cũng có thể sử dụng Java bindings.

  • Ngoài ra còn có công việc ảo hóa ngôn ngữ rất thú vị đang được thực hiện như một nỗ lực chung giữa các phòng thí nghiệm tại Stanford và EPFL. This page có liên kết đến các giấy tờ và có một số course at Stanford với nhiều liên kết hơn. Có một số ứng dụng thú vị để phát triển DSL cho tính toán hiệu năng cao trên môi trường tính toán dị thường, bao gồm cả GPU.

Cập nhật. Daniel Sobral cũng đề nghị Tools and Libraries wiki.

+0

Cảm ơn STM, không biết về điều đó. Trông đầy hứa hẹn. –

+0

Câu trả lời này thực sự là FTW. Bạn _should_ đã dán một liên kết đến Libraries & Tools wiki, mặc dù ... –

+0

@Daniel, được cập nhật, cảm ơn. –

Các vấn đề liên quan