Junior — Middle
Selgitage, kuidas erinevad Semaphore ja Mutex mehhanismid ressurssidele juurdepääsu haldamisel
sobes.tech AI
Vastus AI-lt
Semaphore ja Mutex on sünkroniseerimismehhanismid, mida kasutatakse ressurssidele juurdepääsu haldamiseks, kuid need erinevad eesmärgi ja käitumise poolest:
-
Mutex (vastastikune välistus) on primitiiv, mis võimaldab ainult ühel voolul korraga omada ressurssi. See tagab eksklusiivse juurdepääsu. Kui vool on lukustanud mutexi, ootavad teised, kuni see vabastatakse.
-
Semaphore (luba loendur) on üldisem mehhanism, mis sisaldab loendurit, mis määrab, mitu voolu saavad samaaegselt ressurssi kasutada. Näiteks loenduriga 3 semaphore võimaldab kolmel voolul samaaegselt ressursiga töötada.
Näide C#-s:
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // lukusta mutex
// kriitiline sektsioon
mutex.ReleaseMutex(); // vabasta
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // maksimaalselt 3 voolu
semaphore.WaitOne(); // luba saada
// kriitiline sektsioon
semaphore.Release(); // luba vabastada
Kokkuvõte:
- Mutex — eksklusiivseks juurdepääsuks ressursile.
- Semaphore — samaaegsete juurdepääsude arvu piiramiseks.
See on peamine erinevus sünkroniseerimismehhanismi valimisel.