2011-03-11 16 views
7

Ruby'de çok iş parçacıklı programlamayla ilgili bazı blogları okuyorum. Fark ettiğim, yazarın thread-safety kelimesini kullanma eğiliminde olmasıdır. Bu ne demek? İplik-güvenlik kodu yazmak neden önemlidir? Bir kaynağınız varsa (örneğin, genel bir Kitap Listesi diyelim) ve bu listeyi değiştirebilen iki iş parçacığınız varsa,Konu Güvenliği ne anlama geliyor?

+3

+1 Ne okuduğunuzu düşünmek için, herkes :-) :-) – Chris

cevap

7
. Listenin verilerinin tutarsız hale geleceği birçok durum var.

  • (A şimdi bazı bilgiler eklemek istiyor Konu
  • (Veri Konu A tarafından kullanılır ise Konu B aynı Book siler) (Konu A onun Veri görüntüler velerin bir kitabı okur) kitabın)

Yani kitap listesini yazma erişimine sahip olabilir böylece zaman tek tek ileti dizisindenevreli kodunuzu yapmak zorunda.

SpyrosP tarafından belirtilen kilitlenme, Thread A yazma için Listeyi engellediğinde ve listeye veri eklemek için Thread B için beklediğinde gerçekleşir. Çünkü her iki iplik de yapamayacakları bir şey yapmak için birbirlerini bekler. Bu sadece iplik emniyet mekanizması uygun şekilde uygulanmadığında gerçekleşir.

+1

Çok iyi açıkladı. +1 Ayrıca hazır paketlerin (Python için Queue gibi) kutudan çıkarılan iplik güvenli mekanizmalara dayandığını da eklememe izin verin. – Spyros

+0

@SpyroP İyi nokta! Birçok programlama dilinde birçok hazır iplik güvenlik veri yapısı bulacaksınız. Ruby'nin bazı Listelerinin ve Haritalar'ın da buna önem verdiğinden eminim. – Chris