Multicore und Synchronisation
Welche Eigenschaft sperrfreier (lock-free) Algorithmen ist richtig?
- ASelbst wenn ein Thread zwischendurch stehen bleibt, kann mindestens einer der anderen Threads weiterarbeiten
- BAlle Threads schließen ihre Verarbeitung stets mit einer festen Zahl von Schritten ab
- 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.