Zurück zur Übersicht

Begriff

Litmus Test (Concurrency)

Computer Science Systems S5
2 Quellen 0 Lernpfade 1 Backlink enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

In der Chemie prüft Lackmuspapier Säure (Rot) oder Base (Blau). In der Informatik (Hardware/Concurrency) ist ein Litmus Test ein winziges Programm, um zu prüfen: "Verhält sich mein Speicher so, wie ich denke?" Beispiel (Store Buffering): Thread 1: A=1, dann lese B. Thread 2: B=1, dann lese A. Kann es sein, dass beide 0 lesen?

  • Intuition: Nein. Einer muss ja zuerst geschrieben haben.
  • Realität (x86/ARM): JA! Weil CPUs Schreibvorgänge puffern. Litmus Tests sind Code-Schnipsel (in Pseudo-Code oder Assembly), die solche bizarren Grenzfälle provozieren. Tools wie Herd7 simulieren diese Tests formal.

Merksatz: Ein kleines, standardisiertes Testprogramm im Bereich paralleler Systeme, das verwendet wird, um spezifische Verhaltensweisen des Speichermodells (Memory Model) einer CPU oder Programmiersprache zu überprüfen und subtile Concurrency-Bugs zu finden.


Quick-Check

  1. Warum "Litmus"?
    Metapher für "Der ultimative Test, der die Wahrheit zeigt".
  2. Wie findet man Bugs?
    Man führt den Test 100 Millionen Mal aus. Der Fehler passiert vielleicht nur einmal alle 10 Millionen Versuche (Race Condition).
  3. C++20?
    Das C++ Memory Model wurde mit Litmus Tests formal verifiziert, damit Compiler-Optimierungen nicht versehentlich Multithreading kaputt machen.