Wat is Lock-free?

Eigenschap van een algoritme dat, ook als een thread halverwege stilvalt, minstens één van de andere threads vooruitgang kan boeken. Wordt gebouwd met atomaire instructies zoals CAS.

Japanse benaming: ロックフリー

“Lock-free” komt voor in 3 oefenvragen uit 1 onderwerpen, bijv. Multicore en synchronisatie.

Vakgebied: Multicore en synchronisatie

Nu oefenen: vragen over Lock-free

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.

Welke eigenschap van een lock-free algoritme is juist?

  1. AOok als een thread halverwege stilvalt, kan minstens één van de andere threads verder met zijn werk
  2. BAlle threads voltooien hun werk altijd in een vast aantal stappen
  3. CGedeelde gegevens worden bijgewerkt zonder enige atomaire instructie
Antwoord en toelichting tonen

Antwoord: A. Ook als een thread halverwege stilvalt, kan minstens één van de andere threads verder met zijn werk

Bij gebruik van locks worden alle anderen opgehouden als de lockhoudende thread stilvalt door een interrupt of lage prioriteit. Een lock-free algoritme werkt gedeelde gegevens rechtstreeks bij met bijvoorbeeld CAS, zodanig dat een thread alleen hoeft te herhalen als iemand anders is geslaagd. Zo komt in totaal altijd een van de threads vooruit. Het correct maken is echter moeilijk en aandacht voor onder meer het ABA-probleem is nodig.

“Lock-free” in de toelichting

Vragen met “Lock-free” (3)

  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?
  3. Welke uitleg over atomaire instructies (ondeelbare instructies) is juist?

Verwante termen

ABA-probleem LR/SC Interrupt Atomaire instructie Numerieke apertuur (NA) Compare-and-swap Acquire-release Barrièresynchronisatie Conditievariabele Data race

Naar de woordenlijst