Oftmals ist es sinnvoll, Informationen zu haben, die man in verschiedenen threads or live-loops teilen möchte. Beispielsweise möchte man die aktuelle Tonart, die Geschwindigkeit (BPM) oder sogar allerlei andere abstrakte Konzepte wie die aktuelle ‘Komplexität’ teilen (die wiederum unterschiedlich in den verschiedenen Threads interpretiert werden könnte). Dabei möchten wir aber auch nicht auf die deterministischen Garantien von Sonic Pi verzichten. In anderen Worten: Wir möchten Code mit anderen teilen, aber sicherstellen, dass genau das abgespielt wird, was wir uns dabei gedacht haben. Am Ende des Kapitels 5.6. dieses Tutorials gingen wir kurz darauf ein, warum wir *Variablen nicht zwischen verschiedenen Threads teilen sollten”, um nicht die Vorhersagbarkeit zu verlieren (aufgrund von Race Conditions).
Sonic Pi’s Lösung, um auf einfache Art mit globalen Variablen in einer verhersagbaren Weise zu arbeiten, ist das neuartige System, das wir “Time State” (Zeitzustand) genannt haben. Dies klingt erstmal komplex und schwierig (solche Themen werden normalerweise erst in der Universität gelehrt), allerdings wirst du erkennen, dass es Sonic Pi unglaublich einfach macht, einen Zustand zwischen verschiedenen Threads zu teilen, und dabei dennoch Programme zu schreiben, die *thread-safe und vorhersagbar” sind.
Sag Hallo zuget
und set
…