Junior — Middle
Leg uit hoe SpinLock werkt en in welke scenario's het wordt toegepast.
sobes.tech AI
Antwoord van AI
SpinLock is een primitieve synchronisatie die, wanneer geprobeerd wordt een al bezette lock te veroveren, de thread niet in een wachtstand (sleep) zet, maar een actieve cyclus ("spin") uitvoert, waarbij de beschikbaarheid van de lock wordt gecontroleerd.
Werking:
- De thread probeert de lock te veroveren.
- Als de lock vrij is, verwerft hij deze en gaat verder.
- Als de lock bezet is, controleert de thread in een lus de status, zonder in slaapmodus te gaan.
Wanneer gebruiken:
- Wanneer de wachttijd voor de lock zeer kort is, en overschakelen naar sleep/wakeup duurder zou zijn.
- In systemen met lage latency en hoge concurrentie.
Nadelen:
- Bij lange wachttijden verspilt het CPU-bronnen.
Voorbeeld in pseudocode:
while !atomic_compare_and_swap(&lock, 0, 1) {
// actieve wacht
}
// kritische sectie
lock = 0