Junior — Middle
Selgitage SpinLocki tööpõhimõtteid ja millistes stsenaariumides seda kasutatakse.
sobes.tech AI
Vastus AI-lt
SpinLock on sünkronsusiooni primitiiv, mis püüdes haarata juba hõivatud lukku, ei lülitu ooterežiimi (sleep), vaid teostab aktiivse tsükli ("spin"), kontrollides lukku kättesaadavust.
Tööpõhimõte:
- Lõng püüab lukku haarata.
- Kui lukk on vaba, haarab selle ja jätkab.
- Kui lukk on hõivatud, kontrollib lõng selle olekut tsüklis, ilma magama minemata.
Millal kasutada:
- Kui ooteaeg lukule on väga lühike, ja sleep/wakeup üleminek oleks kallim.
- Madala latentsusega ja suure konkurentsiga süsteemides.
Puudused:
- Pika ootamise korral raiskab CPU ressursse ilma vajaduseta.
Näide pseudokoodis:
while !atomic_compare_and_swap(&lock, 0, 1) {
// aktiivne ootamine
}
// kriitiline sektsioon
lock = 0