Переменные соседа
Ячейка для обмена нужна не всегда — но за короткий путь платят тем, что переменная меняется без следа в программе
Читать переменную соседа уже умеем. write работает
в ту же сторону: адресом служит имя переменной, и значение кладётся прямо в неё.
write 1 processor1 "нужен"Нижний процессор — тот, чья программа показана — раз в секунду ставит верхнему нужен
в единицу. Верхний ждёт этого признака, делает работу и сам же сбрасывает его обратно
в ноль. Ячейки между ними нет.
Что можно и чего нельзя
Заголовок раздела «Что можно и чего нельзя»| Можно | Нельзя |
|---|---|
| записать в существующую переменную соседа | завести соседу новую переменную |
| положить в неё число или объект | переписать константу: @pi, @copper и прочие |
писать себе через @this |
писать в мировой процессор обычным |
Новая переменная не заводится молча: если имя написано с опечаткой, запись просто
не происходит. У соседа нужен, а мы пишем в нужeн с латинской e — и ничего не будет
ни у кого.
Правило: писать к себе, читать у других
Заголовок раздела «Правило: писать к себе, читать у других»Исключение — короткая команда, как в примере: один процессор поднимает признак, второй его видит и сам же гасит. Работает это потому, что владелец переменной остаётся хозяином: он решает, когда признак снять, а посторонний умеет только поднять.
Чем это отличается от ячейки
Заголовок раздела «Чем это отличается от ячейки»| Переменная соседа | Ячейка | |
|---|---|---|
| нужен блок на карте | нет | да |
| переживает правку программы | нет | да |
| видна третьему процессору | только через того же соседа | всем, кто подключён |
| сколько значений | сколько переменных | 64 или 512 |
Главная разница — вторая строка: правка программы обнуляет переменные, и сосед в ту же секунду начнёт читать нули. Для признака «сделай сейчас» это неважно, для накопленных данных — решает всё.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.