Sobes.tech
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.