Multicore und Synchronisation

Welche Eigenschaft sperrfreier (lock-free) Algorithmen ist richtig?

  1. ASelbst wenn ein Thread zwischendurch stehen bleibt, kann mindestens einer der anderen Threads weiterarbeiten
  2. BAlle Threads schließen ihre Verarbeitung stets mit einer festen Zahl von Schritten ab
  3. CGemeinsame Daten werden ganz ohne atomare Befehle aktualisiert
Antwort und Erläuterung anzeigen

Antwort: A. Selbst wenn ein Thread zwischendurch stehen bleibt, kann mindestens einer der anderen Threads weiterarbeiten

Bei Verwendung von Sperren müssen alle anderen warten, wenn der sperrhaltende Thread durch einen Interrupt oder niedrige Priorität stehen bleibt. Sperrfreie Algorithmen aktualisieren gemeinsame Daten direkt, etwa mit CAS, und gestalten es so, dass ein Thread nur dann scheitert und wiederholt, wenn ein anderer erfolgreich war. Dadurch kommt insgesamt stets irgendein Thread voran. Sie korrekt zu entwerfen ist jedoch schwierig, und Probleme wie ABA sind zu beachten.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Welche Aussage zum kritischen Abschnitt (Critical Section) ist richtig?
  2. Welche Aussage zur in parallelen Programmen verwendeten Barrierensynchronisation ist richtig?
  3. Aktualisieren 64 Kerne einen einzigen gemeinsamen Zähler fortwährend gleichzeitig mit atomaren Befehlen, wird es auch mit mehr Kernen nicht schneller. Was ist der Hauptgrund?
  4. Welche Aussage zu NUMA-Systemen (Non-Uniform Memory Access) ist richtig?
  5. Was ist bei der unter Linux in NUMA-Systemen häufig verwendeten First-Touch-Strategie (die Seite wird im Speicher des Knotens abgelegt, auf dem der Thread läuft, der sie als Erster beschreibt) zu beachten?

Vergleiche zu diesem Thema