Multicore en synchronisatie

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)?

  1. AOmdat gewoon lezen nauwkeuriger is dan een atomaire instructie
  2. BOmdat een atomaire instructie maar één keer per programma kan worden gebruikt
  3. COmdat bij alleen lezen in de eigen cache kan worden gewacht, zodat het verkeer van cacheregels tussen cores sterk afneemt
Antwoord en toelichting tonen

Antwoord: C. Omdat bij alleen lezen in de eigen cache kan worden gewacht, zodat het verkeer van cacheregels tussen cores sterk afneemt

Een atomaire instructie omvat een schrijfactie, dus als een wachtende thread die herhaaldelijk uitvoert, strijden de cores telkens om de regel in de M-toestand en worden kopieën in andere cores steeds ongeldig gemaakt. Met gewoon lezen blijft elke core alleen zijn S-kopie in de eigen cache lezen, en ontstaat geen verkeer. Alleen wanneer de lock vrijkomt en de waarde verandert, wordt met een atomaire instructie geprobeerd hem te nemen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Welke vergelijking van een mutex (slapende lock) en een spinlock is juist?
  2. Welk voorbeeld van een deadlock is juist?
  3. Welke methode is de meest gangbare om deadlock te voorkomen in een programma met meerdere locks?
  4. Wat legt een geheugenconsistentiemodel vast?
  5. Welke uitleg over sequentiële consistentie (sequential consistency) is juist?

Vergelijkingen bij dit onderwerp