Sobes.tech
Junior — Middle

Paaiškinkite SpinLock veikimo principus ir kokiose scenarijuose jis taikomas.

sobes.tech AI

Atsakymas iš AI

SpinLock yra sinchronizacijos primitivas, kuris, bandydamas įgyti jau užimtą užraktą, neperjungia į laukimo būseną (sleep), o vykdo aktyvų ciklą ("spin"), tikrindamas užrakto prieinamumą.

Veikimo principas:

  • Srautas bando įgyti užraktą.
  • Jei užraktas laisvas, jis jį įgyja ir tęsia.
  • Jei užraktas užimtas, srautas ciklo metu tikrina jo būseną, neperjungdamas į miego režimą.

Kada naudoti:

  • Kai laukimo laikas yra labai trumpas, ir perėjimas į sleep/wakeup būtų brangus.
  • Sistemose su žemu delsos lygiu ir dideliu konkurencijos lygiu.

Trūkumai:

  • Ilgai laukiant, CPU ištekliai švaistomi veltui.

Pavyzdys pseudokode:

while !atomic_compare_and_swap(&lock, 0, 1) {
    // aktyvus laukimas
}
// kritinė sekcija
lock = 0