SORU
21 AĞUSTOS 2009, Cuma


Genel olarak içe dönük ve kilit kavramı nedir?

Hep karıştırıyorum ben . Birisi ne örnek Reentrant farklı demek ki bağlamlar? Ve neden olmayan desteklemeyeceğini desteklemeyeceğini vs kullanmak istiyorsunuz.

Pthread ilkel kilitleme, içe dönük ya da değil? Tuzaklar onları Kullanırken Nelerden kaçınılmalıdır

Yeniden yarışmacı dışlama? Teşekkürler

CEVAP
21 AĞUSTOS 2009, Cuma


İçe dönük kilitleme

Evresel kilit bir süreç kendisini engellemeden kilidi birden çok kez iddia edemez. Kolay değil zaten kilit yakaladı olsanız izlemek için bu durumlarda yararlıdır. Eğer bir kilit kilit kapıp içe dönük olmayan, sonra, tekrar, etkili bir şekilde kendi süreci deadlocking kapmak için gittiğinizde blok.

Genel olarak yeniden kullanılabilirlik ise kod yürütülürken çağrıldı bozuk olabilir merkezi bir değişken devletin sahip olduğu bir kod özelliği. Böyle bir çağrı başka bir iş parçacığı tarafından yapılmış olabilir, ya da bir infaz yolu kod içinde kendisini kaynak tarafından yinelemeli olarak yapılmış olabilir.

Eğer kod yürütme ortasında güncellenemedi paylaşılan devlet dayanır içe dönük, güncelleme kırılabilecek en az değil ya.

İçe dönük kilitleme için yararlı bir durum

Bir (biraz) genel ve yapmacık içe dönük bir kilit için bir uygulama örneği olabilir:

  • Bir grafik (belki de bu döngü ile) geçtiği bazı hesaplamalar içeren bir algoritma var. Bir geçiş aynı düğüm birden fazla döngüleri nedeniyle ya da birden fazla yolu olması nedeniyle aynı düğüme ziyaret edebilirsiniz.

  • Veri yapısı eş zamanlı erişim tabidir ve herhangi bir nedenle, belki başka bir iş parçacığı tarafından güncelleştirilmiş olabilir. Yarış koşulları nedeniyle tek tek düğümleri olası veri bozulması ile başa çıkmak için kilitlemek gerekir. (Belki performans) nedense genel olarak tüm veri yapısı kilitlemek istemiyorum.

  • Sen hesaplama ziyaret ettiğiniz ne tam bilgileri elde edemez, ya da izin vermeyen bir veri yapısı 'burada' sorularına hızlı cevap için. daha önce oldum mu kullanıyorsun

    Bu duruma örnek bir öncelik sırası ikili bir yığın olarak uygulanan veya genişliği-ilk arama sırasına kadar basit bir bağlantılı liste kullanarak Dijkstra algoritması basit bir uygulama olacaktır. Bu gibi durumlarda, mevcut eklemeler için sıraya tarama(N) ve her yineleme yapmak istemeyebilirsiniz.

Bu durumda, ne kilitler zaten kazandığınız takip etmek çok pahalı. İstediğiniz varsayarak içe dönük bir kilitleme mekanizması önce bir düğüm ziyaret edip söyleme ihtiyacı azaltır düğüm düzeyinde kilitleme yapın. Sadece körü körüne düğüm, belki de sıra dışı pop sonra kilit kilitleyebilirsiniz.

İçe dönük uyumu

Basit bir dışlama içe dönük olarak tek bir iş parçacığı, belirli bir anda kritik bir bölümünde olabilir. Zaman uyumu yakala ve tekrar kapmak için deneyin basit bir dışlama daha önce kimin elinde olduğunu anlatmak için yeterli bilgi yok. Yinelemeli olarak, her iş parçacığı bir belirteç olduğu bir mekanizma gerekiyor bunu yapmak için zaman uyumu yakalamış olan söyleyebilirdin. Bu, tüm durumlarda bunu yapmak istemeyebilirsiniz o yüzden dışlama mekanizmasını biraz daha pahalı hale getirir.

IIRC POSIX evreleri API içe dönük ve içe dönük olmayan uyumu seçeneği sunuyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • Fubar Protocol

    Fubar Protoc

    21 AĞUSTOS 2010
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009