10 Временное Состояние

# Временное Состояние

Часто полезно иметь информацию, которая является *общей для нескольких потоков или живых циклов*. Например, тебе может понадобиться сделать общими значение текущей тональности, BMP или даже более отвлеченные понятия такие как текущая 'сложность' (которая может быть интерпретирована по-разному в разных потоках).  Мы также не хотим при этом потерять имеющуюся у нас гарантию определенности. Другими словами, мы все еще хотели бы иметь возможность делиться кодом с другими и точно знать, что они услышат, когда запустят его. В конце Раздела 5.6 этого руководства мы кратко обсудили, почему мы *не должны использовать переменные для обмена информацией между потоками* чтобы не потерять фактор детерминизма (из-за гонки состояний).

Sonic Pi решает проблему доступности работы с глобальными переменными детерминистским способом через новаторскую систему, названную Time State (Состояние времени). Это может звучать сложно и трудно (и на самом деле, в Великобритании программирование с несколькими потоками и разделяемой памятью, как правило, является предметом университетского уровня). Однако, как вы увидите, что так же, как и сыграть вашу первую ноту, *Sonic PI сделает обмен состоянием между потоками невероятно простым*, в то же время сохраняя ваш код *потоко-безопасными и детерминированными*.

Встречайте `get` и `set` ...
