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