Perbedaan antara Model Aktor dan Communicating Sequential Processes (CSP)

16

Ketika kita melihat Model Aktor dan Mengkomunikasikan Proses Berurutan kita melihat bahwa mereka berdua mencoba melakukan konkurensi berdasarkan pesan yang lewat , namun keduanya berbeda .

(Kita melihat implementasi dari Model CSP di go-lang 's goroutines (dan Clojure ini core.async ) dan Model Aktor di Scala Akka toolkit)

Saya mencoba untuk mendapatkan daftar sederhana perbedaan antara Model Aktor dan CSP. Sejauh ini saya punya:

Apakah ini benar? Apakah ada sesuatu yang saya lewatkan?

Asumsi

  • Ketika saya mengatakan 'model aktor' - maksud saya dasar teoretis di balik implementasi dalam kerangka Akka Scala
hawkeye
sumber
Poin besar: Dalam menyampaikan pesan CSP adalah sinkron; di Actors, pesan yang lewat tidak sinkron.
Dave Clarke
@ Hawkeye Apa yang Anda anggap sebagai "aktor" model? Sejak deskripsi informal, banyak formalisasi telah muncul, dengan sifat yang agak berbeda.
Martin Berger
@ Martin - itu membantu. Saya telah memperbarui asumsi saya. Mungkin Anda dapat membantu saya menemukan "yang saya cari"
hawkeye
@ Hawkeye Apa yang Anda maksud dengan model Akka? Hanya mekanisme komputasi utama, atau juga kerangka kerja pemantauan / penanganan kesalahan terdistribusi?
Martin Berger
@ MartinBerger hanya mekanisme komputasi utama
hawkeye

Jawaban:

6

Begini menurut saya cara kerja Erlang. Saya percaya Akka sangat mirip.

Setiap proses memiliki satu kotak surat. Pesan-pesan dimasukkan ke dalam kotak surat penerima oleh pengirim, dan diambil oleh penerima menggunakan pencocokan pola. Proses pencocokan ini dapat mengubah urutan pesan dalam arti bahwa pesan terlama dalam kotak surat mungkin tidak cocok, tetapi yang lebih muda tidak. Dalam hal ini yang lebih muda dikonsumsi terlebih dahulu. Selain itu, pemesanan pesan dipertahankan.

Dengan mengingat hal ini, asinkron ππ

Martin Berger
sumber