cevap

25

saf değerlerle uğraşan, değerlendirme sırası önemli değildir. Bu temelde paralellik'un yaptığı gibi: Saf değerleri paralel olarak değerlendirmek. Saf değerlerin aksine, sipariş genellikle yan etkilere sahip eylemler için önemlidir. Eşzamanlı olarak çalışan eylemlere eş zamanlılık eşanlamlı denir. Örnek olarak

, iki eylemleri putStr "foo" ve putStr "bar" düşünün. Bu iki eylemin değerlendirildiği sıraya bağlı olarak, çıktı ya "foobar", "barfoo" ya da aralarında herhangi bir durumdur. Çıktı, belirli değerlendirme sırasına bağlı olduğu için belirsizliği olan'dur. Başka bir örnek olarak

iki değer sum [1..10] ve 5 * 3 düşünün. Bu ikisinin değerlendirildiği sıraya bakılmaksızın, her zaman aynı sonuçlara düşerler. Bu determinizm genellikle sadece saf değerlerle garanti edebileceğiniz bir şeydir.

+22

+1; başka bir deyişle, paralellik bir optimizasyondur; eşzamanlılık anlamsallığı değiştirir. – ehird

+3

@ehird Evet. Bunu iletmeye çalıştığım şey mükemmel. – fuz

+0

Ek açıklık: 1 veri akışı değeri sadece bir kez bağlanabilir 2 program kullanımının önbellek değeri bağlanana kadar beklemeli. Bu nedenle, iki iş parçacığı aynı veri akışı değerini kullanırken davranış belirleyicidir. – jiamo

24

Eşzamanlılık ve paralellik iki farklı şeydir.

eşzamanlılık olmayan deterministik etkileşim birden konuları var demektir. Örneğin, her müşterinin bir iş parçacığı tarafından ele alındığı bir sohbet sunucunuz olabilir. Kararsızlık, modellemeye çalıştığınız sistem için önemlidir.

Paralellik sadece daha hızlı program akışını yapmak için birden çok iş parçacığı kullanmaktan ibarettir. Ancak, sonuç, algoritmayı sırayla çalıştırırsanız tam olarak aynı olmalıdır.

Birçok dil paralellik için temel öğelerine sahip değildirler, bu nedenle iş parçacığı ve kilit gibi eşzamanlılık temel öğeler kullanarak uygulamak zorunda. Bununla birlikte, bu, programcının, istenmeyen determinizm veya diğer eşzamanlılık sorunlarını kazayla tanıtmadığınızdan emin olmanız için dikkatli olmanız gerektiği anlamına gelir. par ve pseq gibi açık paralellik ilkelleriyle, bu kaygıların çoğu sadece gider.

+2

Bu ... a * gerçekten * iyi bir açıklama. Teşekkür ederim. –