Eşzamanlılık ve çok iş parçacıklı uygulamalar hakkında bilgi edinmek için en iyi kaynaklar nelerdir? [kapalı]


16

Çok iş parçacıklı uygulamalar ve eşzamanlı programlama söz konusu olduğunda büyük bir bilgi boşluğum olduğunu fark ettim. Geçmişte bazı temel konuları ele aldım, ancak çoğu aklımdan çıkmış gibi görünüyor ve kesinlikle daha bilgili olmak istediğim ve ihtiyaç duyduğum bir alan.

Eşzamanlı uygulamalar oluşturma hakkında bilgi edinmek için en iyi kaynaklar nelerdir? Ben çok pratik odaklı bir insanım, bu yüzden eğer söz konusu kitap somut örnekler içeriyorsa daha iyi, ama önerilere açığım. Şahsen sahte kod veya C ++ ile çalışmayı tercih ediyorum ve oyun geliştirmeye yönelik bir eğim en iyisi olurdu, ancak gerekli değildir.


"Sahte kodda çalışmayı" mı tercih edersiniz? Umarım bu işe yarar! :)
logc

Yanıtlar:


6

Bunlar son zamanlarda yararlı bulduğum kitaplar:

Uygulamada Java Eşzamanlılığı - Java'nın eşzamanlılık araçlarının çoğunun yazarı tarafından. Biraz Java'ya özgü, ancak ipliklerin tehlikeleri ve tuzakları hakkında çok açık ve bilgilendirici.

Eşzamanlılık Sanatı - başlığın önerdiği gibi parıldayan bir teorik inceleme değil, aslında yararlı tavsiye ve örneklerin oldukça ahmakça ve toprağa bağlı bir özeti.

JVM üzerinde eşzamanlılık Programlama - Bu aslında olan bir scintillating teorik tez, ama çok, çok okunabilir ve anlayışlı. STM veya aktörlerin ne olduğunu, güçlü ve zayıf yanlarının ne olduğunu ve nedenini bilmeniz gerekiyorsa , bu kitap size anlatacaktır.

Intel Diş Açma Yapı Taşları veya Apple'ın Grand Central Station gibi birçok özel yardımcı program kütüphanesi vardır - bunların genellikle kendi iyi kılavuzları vardır, bunlar genellikle oldukça iyidir ve onlarla büyük bir şey yapmak istiyorsanız yine de zorunlu okumalardır.


4

Joe Albahari tarafından bu ücretsiz iş parçacığı kaynak mükemmel buldum ...

C # ile iş parçacığı oluşturma

C # yönüne doğru eğilmiş ancak kavramlar tamamen diğer diller için geçerlidir. Ayrıca İngilizce ve diğer birçok dilde PDF indirme olarak öğretici sağlar. Örnek kod kombinasyonu, kodun adım adım açıklamaları ve örneklere eşlik eden mükemmel dizi ve durum diyagramları nedeniyle bunu tavsiye ederim.

Eğitim beş bölümden oluşmaktadır:

Kitap formunda mevcuttur: Özetle C # 4.0 (bölüm 23 ve 24)


1
+1, bu, .NET'te iş parçacığı / eşzamanlılık / paralellik için her zamanki "git" referansım
Matthew King

4

Birçok eşzamanlılık modeli vardır, bu yüzden hangisini seçeceğinize karar vermeden önce herkes hakkında iyi bir fikriniz olsa iyi olur. Bunun için Yedi Haftada Yedi Eşzamanlılık Modeli: Ne Zaman Threads Unravel adlı kitabını öneriyorum . Değerlendirmeleri ve İçindekiler'i kontrol edin ve bunun neden iyi bir kitap olduğunu görebilirsiniz. Ve son zamanlarda (2014).


1

Şimdi C ++ standardında diş açma tesisleri var. Eğer C ++ öğrenmek istiyorsanız, genel bir iş parçacığı öğretici gitmeden önce yeni dil özelliği basit bir inceleme okumanızı öneririz. Ardından geri dönün ve standardı daha sonra daha ayrıntılı olarak inceleyin.

Pratikte, diş çekme çoğu insanın anladığını düşündüğü, ama anlamadığı şeylerden biridir. Bir IBM araştırma veritabanında (Java), bir linux dosya sisteminde (C) ve bazı oldukça yüksek profilli projelerde yarış koşullarını tanımlayan statik bir analiz araştırmacısının konuşmasına gittim. Bazı projeler, eşzamanlılık ve iş parçacığı konusunda saygın uzmanlar tarafından yazılmıştır. İş parçacığı için güvenli kod oluşturmanın zor olduğunu ve bilgi boşluğunun kendi başlarına tanıyanlar için özel olmadığını unutmayın.

Oyun programlamasında doğrudan size yardımcı olmayacak olsa da, bazı MPI eğitimlerine bakmanızı tavsiye ederim (özür dilerim, belirli bir öneri yok). İş parçacıkları ile doğru eşzamanlı kod yazmak zor gibi görünse de, iletiyi ileterek yapmak oldukça kolay görünüyor. Dolaylı olarak, umut, farklı eşzamanlılık modellerini keşfetmenin, kodunuzu iş parçacığı açısından güvenli olacak şekilde yapılandırmayla ilgili kendi düşünce sürecinize yardımcı olacağıdır.


1

Eşzamanlılık hakkında bilgi edinmek için eşzamanlılık için tasarlanmış bir dil kullanın. Eşzamanlılık için yerleşik desteğe ve çoğu programcı için dili öğrenmeyi kolaylaştıran C benzeri bir sözdizimine sahip olduğu için Golang iyi bir seçimdir.

Neredeyse tüm eşzamanlılık ihtiyaçlarınızı karşılayan ve diğer dillerde daha karmaşık eşdeğerleri olan mesaj geçirme, muteksler vb.

Örneğin, aC'de MPI kullanarak başka bir iş parçacığından int içine değişken alma :

MPI_Recv(&a, 1, MPI_INT, 0, 0, MPI_COMM_WORLD,MPI_STATUS_IGNORE);

Hareket halindeki başka bir (kullanıcı) iş parçacığından a değişkenine int alma:

a := <-c

Pratik yapmayı öğrenmek için tarayıcınızda go kodunu yazabileceğiniz, derleyebileceğiniz ve çalıştırabileceğiniz go tour'a göz atın.

tour.golang.org

Eşzamanlılık bölümüne atlamak için

http://tour.golang.org/concurrency/1

Eski profesör ilk yıl CS öğrencileri için eşzamanlılık konusunda çok popüler bir kısa kurs düzenledi. Eşzamanlılığın ne olduğunu hızlı, ancak kapsamlı bir giriş için kesinlikle bunu okumanızı tavsiye ederim.

Eşzamanlı programlamanın temelleri

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.