Junior — Middle
Karşılıklı dışlama (Mutex) prensibini ve çok iş parçacıklı programlarda kullanımını açıklayabilir misiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Mutual exclusion (Mutex), birden fazla akışın ortak bir kaynağa (örneğin, bir değişken veya dosya) eşzamanlı erişimini engellemek için kullanılan bir senkronizasyon mekanizmasıdır. Mutex, her zaman yalnızca bir akışın kilidi tutmasını ve kritik bölümü çalıştırmasını sağlar.
Çalışma prensibi:
- Akış, kritik bölüme girmeden önce mutex’i almaya çalışır.
- Eğer mutex serbestse, akış erişim sağlar ve devam eder.
- Eğer mutex başka bir akış tarafından tutuluyorsa, mevcut akış engellenir ve serbest bırakılmasını bekler.
- Kaynakla iş tamamlandıktan sonra, akış mutex’i serbest bırakır ve diğer akışların devam etmesine izin verir.
Go dilinde, bu sync.Mutex tipi ile uygulanır:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock() // mutex’i kilitle
counter++ // kritik bölüm
mu.Unlock() // mutex’i serbest bırak
}
Mutex kullanımı, yarış koşullarını önler ve paralel yürütme sırasında veri bütünlüğünü sağlar.