Tijd toestand

Vaak is het nuttig om informatie te delen over meerder threads of live lussen. Je zou bijvoorbeeld de huidige toonsoort, BPM of meer abstracte concepten zoals de huidige ‘complexiteit’ (wat je potentieel op verschillende manieren interpreteerd in verschillende threads). We willen ook niet iets van ons bestaande garanties voor determinisme verliezen wanneer we dit doen. In andere woorden, we willen nog steeds code met andere kunnen delen en exact weten wat ze horen wanneer het wordt uitgevoerd. Aan het einde van sectie 5.6 van deze tutorial wordt kort besproken waarom we geen variabelen zouden moeten gebruiken om informatie te delen tussen threads vanwege het verlies van determinisme (op hun beurt veroorzaakt door race condities).

De oplossing in Sonic Pi voor het probleem van een makkelijk model met globale variabelen op een deterministische wijze is door een vernieuwend systeem dat tijd toestand wordt genoemd. Dit kan complex en moeilijk klinken (in feite is programmeren met meerdere threads en een gedeeld geheugenmodel tipisch een onderwerp op universitair niveau). Echter, zoals je zult zien, net als het spelen van de eerste noot, * Sonic Pi maakt het onzetten eenvoudig om toestand te delen tussen threads* terwijl je programma’s nog steeds thread safe en deterministisch blijven.

Maak kennis met get en set