Multicore en synchronisatie
Welke eigenschap van een lock-free algoritme is juist?
- AOok als een thread halverwege stilvalt, kan minstens één van de andere threads verder met zijn werk
- BAlle threads voltooien hun werk altijd in een vast aantal stappen
- CGedeelde gegevens worden bijgewerkt zonder enige atomaire instructie
Antwoord en toelichting tonen
Antwoord: A. Ook als een thread halverwege stilvalt, kan minstens één van de andere threads verder met zijn werk
Bij gebruik van locks worden alle anderen opgehouden als de lockhoudende thread stilvalt door een interrupt of lage prioriteit. Een lock-free algoritme werkt gedeelde gegevens rechtstreeks bij met bijvoorbeeld CAS, zodanig dat een thread alleen hoeft te herhalen als iemand anders is geslaagd. Zo komt in totaal altijd een van de threads vooruit. Het correct maken is echter moeilijk en aandacht voor onder meer het ABA-probleem is nodig.