Sobes.tech
Junior — Middle

Kas tiksliai perduodama ar naudojama užrakinimo (lock) mechanizme daugiasraityje programavime?

sobes.tech AI

Atsakymas iš AI

Daugialypės eilės programavime, užrakinimo (lock) mechanizme naudojamas objektas arba sinchronizacijos primitivas, kuris užtikrina išskirtinį prieigą prie bendro ištekliaus. Kai srautas įgyja užraktą, kiti srautai, bandantys jį įgyti, lauks, kol jis bus atlaisvintas.

Tai reiškia, kad "lock" metu perduodamas arba naudojamas:

  • Užrakinimo būsena (užimta/laisva).
  • Laukimo mechanizmas (pavyzdžiui, eilė srautų, laukiančių atlaisvinimo).

C# kalboje, lock raktinis žodis veikia su objektu, kuris tarnauja kaip užrakinimo žymeklis. Pavyzdys:

private readonly object _lockObj = new object();

void CriticalSection()
{
    lock(_lockObj)
    {
        // Kodas, kuris turi būti vykdomas tik vieno srauto vienu metu
    }
}

Čia, lock dalyje, perduodama nuoroda į _lockObj objektą, kuris naudojamas prieigos valdymui. Viduje CLR naudoja šį objektą užrakinimo būsenos kontrolei.