Multicore und Synchronisation

Welche Aussage im Vergleich von Mutex (schlafend wartende Sperre) und Spinlock ist richtig?

  1. AEin Mutex gibt beim Warten die CPU ab und eignet sich daher für langes Warten, doch Schlafen und Aufwachen verursachen Aufwand im Betriebssystem
  2. BEin Mutex verbraucht auch beim Warten CPU-Zeit und kann daher nur für kurzes Warten verwendet werden
  3. CMutex und Spinlock sind dasselbe und unterscheiden sich nur im Namen
Antwort und Erläuterung anzeigen

Antwort: A. Ein Mutex gibt beim Warten die CPU ab und eignet sich daher für langes Warten, doch Schlafen und Aufwachen verursachen Aufwand im Betriebssystem

Kann ein Mutex die Sperre nicht erhalten, versetzt er den Thread in den Wartezustand und überlässt die CPU anderen Threads; wird die Sperre freigegeben, weckt das Betriebssystem ihn. Da beim Warten keine CPU-Zeit verschwendet wird, eignet er sich für langes Warten, doch Schlaf-/Aufweckvorgang und Kontextwechsel kosten einige Mikrosekunden. Mutexe realer Bibliotheken kombinieren die Vorteile beider, etwa indem sie kurz spinnen und dann schlafen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Welches Beispiel für einen Deadlock ist richtig?
  2. Welche Methode zur Vermeidung von Deadlocks in Programmen mit mehreren Sperren ist am gebräuchlichsten?
  3. Was legt ein Speicherkonsistenzmodell (Memory Consistency Model) fest?
  4. Welche Aussage zur sequentiellen Konsistenz (Sequential Consistency) ist richtig?
  5. Die beiden obigen Threads laufen gleichzeitig auf getrennten Kernen (ohne Umordnung durch den Compiler). Welches Ergebnis tritt bei sequentieller Konsistenz nicht auf, kann aber bei realen CPUs wie x86 auftreten?

Vergleiche zu diesem Thema