Multicore und Synchronisation
Welches Beispiel für einen Deadlock ist richtig?
- AThread 1 hält Sperre A und wartet auf Sperre B, Thread 2 hält Sperre B und wartet auf Sperre A
- BZwei Threads ändern dieselbe Variable ohne Synchronisation, und der Wert wird zerstört
- CEin Thread erhält eine Sperre und gibt sie sofort wieder frei
Antwort und Erläuterung anzeigen
Antwort: A. Thread 1 hält Sperre A und wartet auf Sperre B, Thread 2 hält Sperre B und wartet auf Sperre A
Ein Deadlock ist ein Zustand, in dem mehrere Threads jeweils Ressourcen halten und auf Ressourcen warten, die andere Threads halten, sodass keiner mehr weiterkommt. Im Beispiel wartet Thread 1 auf die Freigabe von B und Thread 2 auf die von A, doch keiner gibt seine eigene Sperre ab, sodass beide dauerhaft stehen bleiben. Da sie ohne CPU-Verbrauch stehen, wirkt die Verarbeitung von außen wie eingefroren.