Общая память
Переменные соседа не видны никому. Ячейка видна всем, кто к ней подключён — на этом и строят разделение труда
У процессоров нет общих переменных. Совсем: медь в одном и медь в другом — два разных
значения, и узнать чужое нельзя ничем. Зато ячейка памяти — обычный блок, и подключиться
к ней могут оба.
На карте два процессора. Верхний спрашивает склад и кладёт ответ в ячейку; нижний берёт его оттуда и печатает. Связи у них разные: у верхнего склад и ячейка, у нижнего — ячейка и табло. Общая у них только ячейка.
Зачем делить работу
Заголовок раздела «Зачем делить работу»Запас инструкций у процессора свой — @ipt за тик, — и потратить его можно только на себя.
Два процессора работают параллельно, и это единственный способ ускорить логику:
- медленная часть (обход связей, поиск радаром) живёт в одном процессоре и кладёт итог в память;
- быстрая часть (рисование на дисплее, ведение юнита) живёт в другом и берёт готовое.
Второй при этом не ждёт первого: он читает то, что лежит, и если там прошлое значение — работает с ним.
Договариваться приходится самим
Заголовок раздела «Договариваться приходится самим»Ячейка не умеет сказать «данные свежие» или «сейчас идёт запись». Всё, что есть, — места и значения; смысл им придаёт уговор между программами, и записан он только в голове автора.
Отсюда простое правило: адреса стоит подписать — комментарием в программе или на бумаге.
| Адрес | Что лежит |
|---|---|
| 0 | меди на складе |
| 1 | сколько ждём |
| 2 | флаг: нужен подвоз |
Что ещё годится общим
Заголовок раздела «Что ещё годится общим»- Ячейка — 64 места, размер 1×1: хватает на уговор из нескольких чисел.
- Блок памяти — 512 мест: списки, очереди, таблицы.
- Сам процессор — переменные соседа по именам, без лишнего блока на карте; об этом следующий урок.
- Блок сообщений — только текст и только для человека: программа читать его не умеет.
Обратная сторона: любой процессор, подключённый к ячейке, может в неё писать. Защиты нет, и случайная запись по чужому адресу выглядит как «данные портятся сами».
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.