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