Sobes.tech
Junior — Middle

Aký je rozdiel medzi bežným zámkom a rekurzívnym zámkom pri synchronizácii vlákien?

sobes.tech AI

Odpoveď od AI

Bežná zámka (mutex) umožňuje jednému vláknu získať zdroj, a ak sa rovnaké vlákno pokúsi získať ju znova, bude zablokované, čo vedie k deadlocku (zablokovaniu).

Rekurzívna zámka (recursive mutex) sa líši tým, že rovnaké vlákno ju môže získať niekoľkokrát za sebou bez zablokovania. Avšak, zámka musí byť uvoľnená toľkokrát, koľkokrát bola získaná, aby k nej mali prístup aj iné vlákna.

Príklad:

  • Bežná zámka:

    • Vlákno A získa zámku.
    • Vlákno A sa pokúsi získať ju znova — je navždy zablokované.
  • Rekurzívna zámka:

    • Vlákno A získa zámku.
    • Vlákno A ju získa znova — úspešne.
    • Vlákno A uvoľní zámku dvakrát, potom je dostupná iným vláknam.