2010-09-20 9 views
6

Görüşmecinin bana şu soruyu sorduğu bir röportaja katıldım:Bu dişler güvenli midir?

Yeniden giriş ve karşılıklı dışlama ipliği güvenli midir? Bana nedenini açıklayabilir misin ?

Ben

Karşılıklı dışlama parçacığı güvenli olduğunu ... eşzamanlı programlama için nispeten yeni duyuyorum ve bunu cevap veremedi .. Ama belirtti. Ancak yeniden-entrancy değildir ve bu yüzden yeniden kilitlenen kilitlerimizin olmasının sebebi de budur.

Görüşmeci olsa ben bunu berbat düşünüyorum ... farklı bir alana ... için bir sonraki soruya geçti

o bana bu sorulduğunda dememi bekliyor ne

?

cevap

5

Uygun cevap olmalıdır:

Evet onlar Konu güvenliğinin uygulanması bulunmaktadır.

kısmen sonra, bir görev tarafından yürütülen başka bir uygulama tarafından yeniden girilmesi ve edilebileceği şekilde kod yazma yeniden entrancy

orijinal görevi devam edildi. Bu, statik veya genel değişkenler yerine, genellikle her yığına yerel olarak değişkenler halinde durum bilgilerinin kaydedilmesini gerektirir. Paylaşılan verilere

bir örnek

Karşılıklı dışlama

Erişim yalnızca bir iş parçacığı okur veya herhangi bir zamanda paylaşılan verileri yazar sağlamak mekanizmaları kullanarak seri hale. Eğer bir kod parçası birden fazla paylaşılmış veri parçasına erişirse çok dikkatli olunmalıdır - problemler arasında pek çok işletim sistemi ders kitabında sayılan yarış koşulları, deadlock'lar, cankurtaranlar, açlık ve çeşitli diğer hastalıklar sayılabilir.

bir örnek

+0

Neden aşağı bir oy ??? –

+0

(-1) yeniden giriş, duraklatılmıyor ve devam etmiyor. Bir işlev, aynı anda birden fazla yürütme iş parçacığı "yürütme" ye sahip olmayı destekliyorsa yeniden işlev görür, aksi takdirde işlevin başka bir yürütme işlemi devam ederken işleve girebilirsiniz. –

+0

http://en.wikipedia.org/wiki/Thread_safety http://stackoverflow.com/questions/352365/code-re-entrancy-vs-thread-safety –

0

Ben fonksiyonları kaynaklarını ele şekilde ilgili reentrancy ve iplik güvenliği http://en.wikipedia.org/wiki/Reentrant_(subroutine)

Her iki kavram alıntı. Ancak, aynı değiller.

Yeniden tanımlama kavramı bir işlevin dış arabirimini etkileyebilirken, iş parçacığı güvenliği yalnızca dış arabirimini değil, işlevin uygulanmasını ilgilendirir. Çoğu durumda, tekrarlamayan bir işlevi yeniden etkinleştirmek için, dış arabirimi, tüm veriler işlevin arayan tarafından sağlanacak şekilde değiştirilmelidir.

- İş parçacığı güvenli olmayan bir iş parçacığı güvenliğini sağlamak için, yalnızca farklı kaynakların eşzamanlı erişimlerinden paylaşılan kaynakları korumak için eşitleme blokları ekleyerek yalnızca uygulamanın değiştirilmesi gerekir. Bu nedenle, reentrancy, iplik emniyetinden daha temel bir özelliktir ve tanım olarak, iplik emniyetine yol açar: Her bir girdap işlevi, diş güvenlidir; Ancak, her bir iş parçacığı güvenli işlevi reentrant değildir.