Junior — Middle
Kaynaklara erişim kontrolü bağlamında Semaphore ve Mutex mekanizmalarının farklarını açıklayın
sobes.tech yapay zeka
AI'dan gelen yanıt
Semaphore ve Mutex, kaynaklara erişimi yönetmek için kullanılan senkronizasyon mekanizmalarıdır, ancak amaçları ve davranışları bakımından farklılık gösterirler:
-
Mutex (karşılıklı dışlama), aynı anda yalnızca bir akışın bir kaynağı sahip olmasına izin veren bir primitiftir. Özel erişim sağlar. Bir akış mutex'i kilitlediyse, diğerleri serbest bırakılmasını bekler.
-
Semaphore (izin sayacı), daha genel bir mekanizmadır ve aynı anda kaç akışın kaynağa erişebileceğini belirleyen bir sayaç içerir. Örneğin, sayacı 3 olan bir semafor, aynı anda üç akışın kaynağı kullanmasına izin verir.
C# örneği:
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // mutex'i kilitle
// kritik bölüm
mutex.ReleaseMutex(); // serbest bırak
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // maksimum 3 akış
semaphore.WaitOne(); // izin al
// kritik bölüm
semaphore.Release(); // izin bırak
Özetle:
- Mutex — kaynağa özel erişim için.
- Semaphore — eşzamanlı erişim sayısını sınırlamak için.
Bu, senkronizasyon mekanizması seçerken temel farktır.