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