Sobes.tech
Junior — Middle

Kuo skiriasi įprastas užraktas nuo rekursinio užrakto siūlų sinchronizavime?

sobes.tech AI

Atsakymas iš AI

Įprastas užraktas (mutex) leidžia vienam srautui įgyti išteklių, ir jei tas pats srautas bando jį vėl įgyti, jis bus užblokuotas, kas sukelia mirtiną užraktą (deadlock).

Rekursinis užraktas (recursive mutex) skiriasi tuo, kad tas pats srautas gali jį įgyti kelis kartus iš eilės be užblokavimo. Tačiau užraktas turi būti atlaisvintas tiek kartų, kiek jis buvo įgytas, kad kiti srautai galėtų prie jo prieiti.

Pavyzdys:

  • Įprastas užraktas:

    • Srautas A įgyja užraktą.
    • Srautas A bando jį vėl įgyti — jis yra amžinai užblokuotas.
  • Rekursinis užraktas:

    • Srautas A įgyja užraktą.
    • Srautas A jį vėl įgyja — sėkmingai.
    • Srautas A du kartus atlaisvina užraktą, po to jis tampa prieinamas kitiems srautams.