Sobes.tech
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