2013-11-24 15 views
12

1978 Paper by Hoare we have an idea called Communicating Sequential Processes'da. Bu Go, Occam ve Clojure'de core.async'da kullanılır.Sıralı İşlemleri İletmek [CSP] Scala'daki aktör modeline bir alternatif mi?

Scala'da Aktör Modeline alternatif olarak CSP kullanmak mümkün mü? (JCSP'u görüyorum ama bu tek seçenek olup olmadığını merak ediyorum, eğer olgunlaşmışsa ve kimse bunu kullanıyorsa).

EDIT - Scala'daki JCSP'ye alternatif olarak Communicating Scala Objects'u da görüyorum. Fakat bunların gerçek iş parçacıklarına bağlı olduğu görülüyor - ki bu da CSP'nin faydalarından birini özlüyor gibi görünüyor, çok sayıda iş parçacığının her zaman aktif kalmasının bellek kaynağı maliyetinden kurtulmak.

cevap

2

Sen this document danışmalısınız, ama genel olarak orada birkaç farklılıklar şunlardır:

  • Kanallar CSP olarak, mesajları iletmek için kanalları kullanabilirsiniz
  • aktörler kimlikler varken anonim fakat aktörler doğrudan her başvurabilirsiniz diğer. CSP'de iletişim, buluşma şeklinde yapılır (yani, senkronize edilir). Aktörler asenkron ileti iletimini destekler.

Ve evet, bu farklar sizin konumunuzda kabul edilebilirse, CSP'yi Aktör modeline alternatif olarak kullanmak mümkündür. JCSP ile ilgili herhangi bir deneyimim yok ancak bu kitaplığı kullanmamanızı tavsiye etmiyorum (nedeni, 2011'den beri projede herhangi bir etkinlik olmadığını görüyorum).

+0

CSP'de, Kanallar anonim değildir. CSP bir süreç cebiridir, bu yüzden süreçler bir değişken veya bir ifade ile temsil edilebilir. CSP'nin uygulamaları anonim işlemlere sahip olabilir. –

+0

@ArturoHernandez: Açıklama için Thx! – rlegendi

İlgili konular