Multicore en synchronisatie
Welke uitleg over het ABA-probleem, dat bij lock-free datastructuren met CAS aandacht vraagt, is juist?
- ATwee threads A en B kunnen alleen nog om beurten worden uitgevoerd
- BWanneer een waarde van A naar B verandert en dan terug naar A, merkt CAS de verandering niet op en slaagt
- 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.