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.