2016-03-31 30 views
-2

StackOverflow'ta bir Deadlock nasıl oluşturulacağına dair birçok cevap gördüm, ancak yazılı kod. Daha basit bir şekilde anlamaya çalışıyorum. Bu Deadlock'u yeniden oluşturmak için atılacak adımların hangisi olacağını bilmek istedim. Kodları aramıyorum ama daha fazla adım. Traffic DeadlockKilitlenme oluşturma süreci nedir?

Zaman ayırdığınız için teşekkür ederiz. Bağlantı görüntüsü için üzgünüz, resim göndermek için 10 itibara ihtiyacım var. mümkün

cevap

0

kolay yoludur - Süreç A bu işi bitirmek için A için sırayla, ilk bitirmek için süreç B beklemek zorunda (en A bazı hesaplama B çıktısını ihtiyacı diyelim kendi başına) ve aynı şey B'da gerçekleşir: kendisini bitirmek için A işleminin çıktısını beklemek zorundadır.

Umarım bu sizin için yeterince açıktır. Özellikle kod sormadığınız için, herhangi bir kod yazmam, çünkü deadlock kodunu bulmak çok kolay. Ama temel olarak, birbirini engelleyen otomobillerin resminde olduğu gibi.

0

Kilitlenmedeki "kilit", birden çok işlemin aynı dosya/tabloyu aynı anda güncelleştirmesini önlemek için dosyaları veya veritabanı tablolarını kilitleme yeteneğinden kaynaklandı. Örneğin, işlem 1, tablo A'yı kilitler ve işlem 2, B işlemcisini kilitler. İşlem 1, B tablosunu da güncellemek istiyorsa ancak kilitli olduğunu tespit ederse, işlem 2'nin onu serbest bırakmasını beklemek zorundadır. Eğer işlem 2, tablo A'yı güncellemek zorundaysa, aynı zamanda kilitlenecektir.

Bu durum, her iki işlemin kilitlerini serbest bırakmak için birbirlerinin beklediği bir kilitlenme noktasıdır.

0

İkimiz de yemek için bir biftek aldık, ama gümüş eşyalarda düşüküz.

Yemek için bir çatalım var, ama tek bıçağın var, bu yüzden etimi kesmeden önce onunla bitirmeni beklemek zorundayım.

Kesmek için bir bıçağın var, ama tek çatalıma sahibim, bu yüzden bekletilene kadar beklemelisin.

Görünüşe göre aç gideceğiz. Bu bir kilitlenme.

Standart çözüm, bir kişinin aynı anda bir bıçağa ve bir çatala ihtiyaç duyması halinde, önce çatalı kaldırması gerektiğinden emin olmaktır.