Sobes.tech
Junior — Middle

Magyarázza el a SpinLock működési elveit és hogy milyen szcenáriókban alkalmazzák.

sobes.tech MI

Válasz az MI-től

SpinLock egy szinkronizációs primitívum, amely megpróbálva elfogni egy már foglalt zárolást, nem várakozó állapotba (sleep) helyezi a szálat, hanem aktív ciklust ("spin") hajt végre, ellenőrizve a zárolás elérhetőségét.

Működési elv:

  • A szál megpróbálja elfogni a zárolást.
  • Ha a zárolás szabad, elfogja és folytatja.
  • Ha a zárolás foglalt, a szál ciklusban ellenőrzi annak állapotát, anélkül, hogy alvó módba lépne.

Mikor használjuk:

  • Amikor a zárolás várakozási ideje nagyon rövid, és a sleep/wakeup váltás drágább lenne.
  • Alacsony késleltetésű és magas versenyhelyzetű rendszerekben.

Hátrányok:

  • Hosszú várakozás esetén CPU erőforrásokat pazarol.

Példa pseudokódban:

while !atomic_compare_and_swap(&lock, 0, 1) {
    // aktív várakozás
}
// kritikus szakasz
lock = 0