Junior — Middle
Vysvetlite, v čom sa líšia mechanizmy Semaphore a Mutex v kontexte riadenia prístupu k zdrojom
sobes.tech AI
Odpoveď od AI
Semaphore a Mutex sú mechanizmy synchronizácie používané na riadenie prístupu k zdrojom, ale líšia sa účelom a správaním:
-
Mutex (vzájomné vylúčenie) je primitív, ktorý umožňuje, aby iba jedno vlákno vlastnilo zdroj naraz. Zabezpečuje exkluzívny prístup. Ak vlákno zablokovalo mutex, ostatné budú čakať, kým nebude uvoľnený.
-
Semaphore (čítač povolení) je všeobecnejší mechanizmus, ktorý obsahuje čítač určujúci, koľko vlákien môže súčasne získať prístup ku zdroju. Napríklad semaphore s čítačom 3 umožní trom vláknam pracovať so zdrojom súčasne.
Príklad v C#:
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // zamknúť mutex
// kritická sekcia
mutex.ReleaseMutex(); // odomknúť
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // maximálne 3 vlákna
semaphore.WaitOne(); // získať povolenie
// kritická sekcia
semaphore.Release(); // uvoľniť povolenie
Zhrnutie:
- Mutex — pre exkluzívny prístup k zdroju.
- Semaphore — na obmedzenie počtu súčasných prístupov.
Toto je kľúčový rozdiel pri výbere mechanizmu synchronizácie.