Multicore en synchronisatie

In welke situatie is een spinlock het minst geschikt?

  1. AWanneer de lock lang wordt vastgehouden en wachtende threads nodeloos CPU-tijd blijven gebruiken
  2. BWanneer de lock zeer kort, enkele tientallen nanoseconden, wordt vastgehouden
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Waarom wordt bij een spinlock niet meteen met een atomaire instructie de lockvariabele proberen te wijzigen, maar wordt normaal met gewoon lezen gewacht tot de lock vrij lijkt en dan pas een atomaire instructie gebruikt (test-and-test-and-set)?
  2. Welke vergelijking van een mutex (slapende lock) en een spinlock is juist?
  3. Welk voorbeeld van een deadlock is juist?
  4. Welke methode is de meest gangbare om deadlock te voorkomen in een programma met meerdere locks?
  5. Wat legt een geheugenconsistentiemodel vast?

Vergelijkingen bij dit onderwerp