# Stan czasu

Bardzo często przydatne jest posiadanie informacji, która jest współdzielona pomiędzy wieloma wątkami lub żywymi pętlami. Na przykład, chciałbyś współdzielić aktualną gamę, BPM albo może nawet bardziej abstrakcyjne koncepty takie jak aktualna ‘złożoność’ (coś co mógłbyś interpretować na różne sposoby w różnych wątkach). Ponadto nie chcemy także zgubić żadnego z naszych istniejących i deterministycznych mechanizmów gdy to robimy. Innymi słowy, chcielibyśmy być w stanie współdzielić kod z innymi i być stuprocentowo pewnymi tego, że usłyszą to co chcemy gdy go uruchomią. Pod koniec Sekcji 5.6 tego samouczka krótko wyjaśniliśmy dlaczego nie powinniśmy używać zmiennych do współdzielenia informacji pomiędzy różnymi wątkami ze względu na możliwość utraty determinizmu (to z kolei z powodu wyścigu wątków).

Sonic Pi umożliwia rozwiązanie problemu łatwej pracy z globalnymi zmiennymi w deterministyczny sposób poprzez nowatorski system, który nazywa się Stan Czasu. Może to brzmieć trochę skomplikowanie (i rzeczywiście, w Wielkiej Brytanii, programowanie z wykorzystaniem wielu wątków i współdzielonej pamięci to temat na poziomie typowo uniwersyteckim). Jednakże, jak niedługo zobaczysz, dokładnie tak samo jak zagranie twojej pierwszej nuty, Sonic Pi sprawia, że współdzielenie stanu pomiędzy wątkami jest niezwykle łatwe a jednocześnie sprawia, że twoje programy są bezpieczne z punktu widzenia wielowątkowości oraz deterministyczne..

Poznaj `get` i `set`…