Multicore en synchronisatie
Welk voorbeeld van een deadlock is juist?
- AThread 1 houdt lock A vast en wacht op lock B, en thread 2 houdt lock B vast en wacht op lock A
- BTwee threads wijzigen dezelfde variabele zonder synchronisatie, waardoor de waarde wordt verstoord
- CEén thread neemt een lock en geeft die direct weer vrij
Antwoord en toelichting tonen
Antwoord: A. Thread 1 houdt lock A vast en wacht op lock B, en thread 2 houdt lock B vast en wacht op lock A
Een deadlock is een toestand waarin meerdere threads elk een resource vasthouden en op de resource van een andere thread wachten, zodat niemand verder kan. In het voorbeeld wacht thread 1 tot B vrij is en thread 2 tot A vrij is, maar beide geven hun eigen lock niet vrij, zodat ze voor altijd stilstaan. Omdat zonder CPU-gebruik wordt gestopt, lijkt de verwerking van buitenaf vastgelopen.