Multicore en synchronisatie
In welke situatie is een spinlock het minst geschikt?
- AWanneer de lock lang wordt vastgehouden en wachtende threads nodeloos CPU-tijd blijven gebruiken
- BWanneer de lock zeer kort, enkele tientallen nanoseconden, wordt vastgehouden
- CBij bewerkingen in de kernel van het besturingssysteem die niet mogen slapen
Antwoord en toelichting tonen
Antwoord: A. Wanneer de lock lang wordt vastgehouden en wachtende threads nodeloos CPU-tijd blijven gebruiken
Een thread die bij een spinlock wacht, gebruikt CPU-tijd tot de lock vrij is. Bij een lange vasthoudtijd is al die CPU-tijd verspild en worden ook andere threads gehinderd. Met name als er maar één core is, komt de lock niet vrij zolang de lockhoudende thread niet draait, dus duurt het wachten tot de tijdsindeling is afgelopen. Voor lange wachttijden wordt een slapende mutex gebruikt, en er is ook een methode die een korte tijd draait en dan gaat slapen.