Junior — Middle
V čom sa líši mechanizmus vzájomného vylúčenia Lock a Semaphore pri riadení prístupu k zdrojom?
sobes.tech AI
Odpoveď od AI
Lock (medsebojno izključevanje) in Semaphore (semafor) sta mehanizmi za sinhronizacijo, vendar se razlikujejo po funkcionalnosti in uporabi:
-
Lock (Mutex)
- Namenjen je zagotavljanju izključnega dostopa do vira.
- Le en tok lahko hkrati poseduje Lock.
- Če je Lock zaseden, drugi tokovi čakajo na njegovo sprostitev.
- Uporablja se za zaščito kritičnih sekcij.
-
Semaphore
- Ima števec, ki določa, koliko tokov lahko hkrati dostopa do vira.
- Lahko omogoči dostop več tokov hkrati (npr. semaphore s števcem 3 omogoča 3 tokovam hkrati dostop).
- Uporablja se za upravljanje dostopa do omejenih virov.
Primer v C#:
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // pridobitev
// kritična sekcija
mutex.ReleaseMutex(); // sprostitev
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // največ 3 hkrati
semaphore.WaitOne();
// delo z virom
semaphore.Release();
Torej, Lock je poseben primer semaforja z največjim števcem 1.