Junior — Middle
Kāda ir atšķirība starp parasto bloķēšanu un rekursīvo bloķēšanu pavedienu sinhronizācijā?
sobes.tech AI
Atbilde no AI
Parasts bloķētājs (mutex) ļauj vienam pavedienam iegūt resursu, un, ja tas pats pavediens mēģina to iegūt vēlreiz, tas tiks bloķēts, kas noved pie mirtinās bloķēšanas (deadlock).
Rekursīvais bloķētājs (recursive mutex) atšķiras ar to, ka tas pats pavediens var to iegūt vairākas reizes pēc kārtas bez bloķēšanas. Tomēr bloķētājs ir jāatbrīvo tik daudz reižu, cik tas ir iegūts, lai citi pavedieni varētu tam piekļūt.
Piemērs:
-
Parasts bloķētājs:
- A pavediens iegūst bloķētāju.
- A pavediens mēģina to iegūt vēlreiz — tas ir uz mūžu bloķēts.
-
Rekursīvais bloķētājs:
- A pavediens iegūst bloķētāju.
- A to iegūst vēlreiz — ar panākumiem.
- A pavediens divreiz atbrīvo bloķētāju, pēc tam tas kļūst pieejams citiem pavedieniem.