Junior — Middle
Çok iş parçacıklı programlamada hangi tür kilitlerin olduğunu ve nasıl çalıştıklarını açıklayabilir misin?
sobes.tech yapay zeka
AI'dan gelen yanıt
Çok iş parçacıklı programlamada, paylaşılan kaynaklara erişimi senkronize etmeye yardımcı olan farklı kilit türleri vardır:
- Mutex (Mutual Exclusion) — kaynağa özel erişim sağlar. Aynı anda sadece bir iş parçacığı mutex'i alabilir.
- Yinelenebilir mutex — aynı iş parçacığının kilidi birden fazla kez almasına izin verir, kendi kendine engellenmeden.
- Okuma-Yazma Kilidi (Read-Write Lock) — birden fazla iş parçacığının aynı anda kaynağı okuyabilmesine izin verir, ancak yazma yalnızca münhasırdır.
- Semafor — aynı anda kaynağa erişebilecek iş parçacığı sayısını sınırlar.
- Spinlock (aktif bekleme) — iş parçacığı, kilidin kullanılabilir olup olmadığını döngü içinde kontrol eder, bekleme durumuna geçmeden.
Swift'te bir mutex kullanım örneği:
let lock = NSLock()
func criticalSection() {
lock.lock()
// Kritik bölüm
lock.unlock()
}
Kilit türünün seçimi, göreve ve performans ile güvenlik gereksinimlerine bağlıdır.