Multicore en synchronisatie

Welke uitleg over een data race is juist?

  1. AEen toestand waarin meerdere threads dezelfde variabele alleen tegelijk lezen
  2. BEen toestand waarin één thread twee keer achtereen naar dezelfde variabele schrijft
  3. CEen toestand waarin meerdere threads zonder synchronisatie tegelijk dezelfde variabele benaderen en minstens één daarvan schrijft
Antwoord en toelichting tonen

Antwoord: C. Een toestand waarin meerdere threads zonder synchronisatie tegelijk dezelfde variabele benaderen en minstens één daarvan schrijft

Een data race is een toestand waarin de volgorde van lezen en schrijven op dezelfde plaats niet door synchronisatie is vastgelegd, zodat het resultaat afhangt van de volgorde van uitvoering. Omdat het afhankelijk van timing wel of niet optreedt, is het een fout die bij tests moeilijk te vinden is. In C en C++ is het gedrag van een programma met een data race ongedefinieerd. De volgorde moet worden vastgelegd met locks of atomaire variabelen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Wanneer bovenstaande code door twee threads tegelijk wordt uitgevoerd, kan de uiteindelijke waarde van counter kleiner zijn dan 200000. Wat is de juiste reden?
  2. Welke uitleg over atomaire instructies (ondeelbare instructies) is juist?
  3. Welke beschrijving van de werking van de atomaire instructie CAS (compare-and-swap) is juist?
  4. De bovenstaande code verdubbelt de gedeelde variabele counter met CAS(&p, verwachte waarde, nieuwe waarde). Wanneer mislukt CAS en wordt de lus opnieuw doorlopen?
  5. Wanneer mislukt bij een instructiepaar zoals LR/SC (load-reserved/store-conditional) van RISC-V de SC (store-conditional)?

Vergelijkingen bij dit onderwerp