Junior — Middle
Ի՞նչ տարբերություն կա սովորական և ռեկուրսիվ փակման միջև թելերի սինխրոնիզացիայում։
sobes.tech AI
Պատասխան AI-ից
Անհատական բլոկը (mutex) թույլ է տալիս մի թելին գրավել ռեսուրսը, և եթե նույն թելը փորձի կրկին գրավել այն, այն կբլոկվի, ինչը հանգեցնում է միմյանց բլոկավորման (deadlock):
Ռեկուրսիվ բլոկը (recursive mutex) տարբեր է այն իմաստով, որ նույն թելը կարող է մի քանի անգամ հերթականաբար գրավել այն առանց բլոկվելու: Այնուամենայնիվ, բլոկը պետք է ազատել այնքան անգամ, որքան այն գրավել է, որպեսզի մյուս թելերը կարողանան մուտք գործել:
Օրինակ՝
-
Սովորական բլոկ:
- Թել A-ն գրավում է բլոկը:
- Թել A-ն փորձում է կրկին գրավել այն — այն մշտապես բլոկված է:
-
Ռեկուրսիվ բլոկ:
- Թել A-ն գրավում է բլոկը:
- Թել A-ն կրկին գրավում է այն — հաջողությամբ:
- Թել A-ն ազատում է բլոկը երկու անգամ, այնուհետև այն հասանելի է մյուս թելերին։