Middle
Deadlock nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Deadlock (karşılıklı kilitlenme) — çok iş parçacıklı bir uygulamada, iki veya daha fazla iş parçacığının birbirini sonsuza dek engellediği, başka bir iş parçacığının tuttuğu kaynakların serbest bırakılmasını beklediği durumdur. Sonuç olarak, hiçbir iş parçacığı çalışmaya devam edemez.
Klasik bir deadlock durumu örneği:
- İş parçacığı A, kaynak 1'i alır ve kaynak 2'yi bekler.
- İş parçacığı B, kaynak 2'yi alır ve kaynak 1'i bekler.
Her iki iş parçacığı da sonsuza dek kilitlenir.
Deadlockları önlemek için şu yöntemler kullanılır:
- Kaynakların alınmasında katı bir sıralama.
- Kilit beklerken zaman aşımı (timeout).
- Kilitlenmeyen algoritmaların kullanımı.
Java'da örnek:
synchronized(resource1) {
synchronized(resource2) {
// kaynaklarla çalışma
}
}
Başka bir iş parçacığı ters sırayla kaynakları almaya çalışıyorsa, deadlock oluşabilir.