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