Dies ist die Simulator-Ausgabe der Fähigkeit: Es gibt keine echten Threads und keine Zeitmessung. Ein Thread ist eine kurze Liste von Schritten, ein Schedule sagt, wessen Schritt als Nächstes läuft, und die Maschine, die Sie schreiben, führt sie aus, sodass ein Nebenläufigkeitsfehler zu einer Liste von Thread-Nummern wird, die man ausgeben und wiederholen kann. Jede Lektion lehrt eine Idee mit kleinen Beispielen und ihrer Ausgabe, dann erweitert ein bewertetes Labor dieselbe Maschine. Sie lernen zu sehen, wie ein Interleaving ein Update verliert, alle Schedules eines kleinen Programms aufzuzählen, zu formulieren, was eine sperrfreie Warteschlange garantiert, und eine Invariante eines Marktdaten-Fan-outs über alle Schedules zu beweisen.
Sicherheit mit Python-Funktionen, Listen und Dictionaries genügt; C oder C++ sind nicht nötig, denn die Maschine ist ein Simulator, den Sie selbst schreiben. Die Fähigkeit Cache-Lokalität hilft bei False Sharing und Cache-Zeilen, ist aber nicht erforderlich.