Evet çocuklar, şimdi bunu tartışalım.
İş parçacıklarının rastgele iptal edilmesinin kilitlenme sorununa nasıl yol açabileceği.
Peki size basitçe şöyle bir soru sorsam, uygulamada muteksi zaten günlüğe kaydetmiş olan bir iş parçacığınız
varsa?
M Doğru, ve şimdi iş parçacığı iptal edildi, bu muteksin durumu ne olacak?
M.
Cevap basit, bu muteks.
M sonsuza kadar kilitli kalacaktır, bu nedenle muteks var olmayan iş parçacığı tarafından kilitli kalacaktır.
Neden mevcut olmayan konu başlığı diyorum çünkü konu başlığı iptal edildi.
Ancak iş parçacığı iptal edilmeden önce iş parçacığı muteks üzerindeki kilidi işgal etti ve muteksi serbest bırakmadan
önce iş parçacığı iptal edildi.
Bu da basitçe, uygulamanın diğer herhangi bir canlı iş parçacığının zaten kilitli durumda olan aynı muteks
m'yi kilitlemeye çalışması halinde nokta kilidine gireceği anlamına gelir.
Şimdi bu muteks m'nin kilidi açılamaz çünkü bu muteks üzerinde kilidi olan iş parçacığı ölmüştür.
Değil mi?
Bu nedenle, iş parçacığı iptal edildiğinde kilitli durumda tutulan herhangi bir mutekse sahip olmamasını sağlamamız gerekir.
Doğru.
Bu kadar basit, bu da bir başka temel kuraldır.
Bu yüzden bu derste şu ana kadar muteks konusunu tartışmadık ve iş parçacığı senkronizasyon tekniklerini
tartışırken muteks konusunu da tartışacağız.
Ama mantıklı.
Burada iş parçacıklarının rastgele iptalinin veya eşzamansız iptalinin nasıl kilitlenme sorunlarına
yol açabileceğini tartışacağız çünkü muteks sonsuza kadar kilitli durumda bırakılabilir.
Özetlemek gerekirse, iş parçacıklarının eşzamansız olarak iptal edilmesinin kaynak sızıntısı
sorununa yol açtığını tartıştık.
Varyans sorunu ve kilitlenme sorunu.
Şimdi iş parçacığı iptali için doğru yolun ne olduğunu tartışacağız, böylece uygulamamızda bu sorunların hiçbiri
meydana gelmezken, aynı zamanda iş parçacığını herhangi bir soruna neden olmadan zarif bir şekilde iptal
edebileceğiz.
Şimdi bu sorunların her birini ele alacak teknikleri tartışacağız.