Wat is ABA-probleem?

Probleem waarbij een waarde van A naar B en weer terug naar A verandert en een CAS die alleen de waarde vergelijkt de wijziging niet opmerkt en toch slaagt. Vraagt aandacht bij lock-free datastructuren.

Japanse benaming: ABA問題

“ABA-probleem” komt voor in 2 oefenvragen uit 1 onderwerpen, bijv. Multicore en synchronisatie.

Vakgebied: Multicore en synchronisatie

Nu oefenen: vragen over ABA-probleem

Welke uitleg over het ABA-probleem, dat bij lock-free datastructuren met CAS aandacht vraagt, is juist?

  1. ATwee threads A en B kunnen alleen nog om beurten worden uitgevoerd
  2. BWanneer een waarde van A naar B verandert en dan terug naar A, merkt CAS de verandering niet op en slaagt
  3. CTwee locks A en B worden in omgekeerde volgorde genomen
Antwoord en toelichting tonen

Antwoord: B. Wanneer een waarde van A naar B verandert en dan terug naar A, merkt CAS de verandering niet op en slaagt

Wanneer de kop van een gekoppelde lijst A is, kan terwijl een thread A leest en CAS voorbereidt een andere thread A verwijderen, bewerkingen met B uitvoeren en weer een knoop op hetzelfde adres A invoegen. CAS slaagt omdat de waarde nog A is, maar de inhoud van de lijst is intussen veranderd en de structuur raakt beschadigd. Dit wordt voorkomen door de pointer samen met een bijwerkteller te vergelijken, of met LR/SC.

“ABA-probleem” in de toelichting

Vragen met “ABA-probleem” (2)

  1. Welke uitleg over het ABA-probleem, dat bij lock-free datastructuren met CAS aandacht vraagt, is juist?
  2. Welke eigenschap van een lock-free algoritme is juist?

Verwante termen

Lock-free LR/SC Interrupt Acquire-release Atomaire instructie Barrièresynchronisatie Compare-and-swap Conditievariabele Data race Deadlock

Naar de woordenlijst