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