Junior — Middle
Kaynaklara erişimi yönetirken Lock ve Semaphore karşılıklı dışlama mekanizmaları nasıl farklıdır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Lock (karşılıklı dışlama) ve Semaphore (semafor) senkronizasyon mekanizmalarıdır, ancak işlevsellikleri ve kullanımları açısından farklılık gösterirler:
-
Lock (Mutex)
- Bir kaynağa özel erişimi sağlamak için tasarlanmıştır.
- Aynı anda sadece bir iş parçacığı Lock'u kullanabilir.
- Lock kullanılırken, başka iş parçacıkları serbest bırakılmasını bekler.
- Kritik bölümleri korumak için kullanılır.
-
Semaphore
- Bir sayacı vardır, bu da aynı anda kaç iş parçacığının kaynağa erişebileceğini belirler.
- Aynı anda birden fazla iş parçacığına erişim izni verebilir (örneğin, sayaç değeri 3 olan bir semafor 3 iş parçacığına aynı anda izin verir).
- Sınırlı sayıda kaynağa erişimi yönetmek için kullanılır.
C# örneği:
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // edinme
// kritik bölüm
mutex.ReleaseMutex(); // serbest bırakma
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // maksimum 3 eşzamanlı erişim
semaphore.WaitOne();
// kaynağa çalışma
semaphore.Release();
Bu nedenle, Lock — maksimum sayaç değeri 1 olan bir semaforun özel durumudur.