Перейти к содержимому

Несколько процессоров

Один процессор — это одна очередь строк. Два идут параллельно — и это единственный способ ускориться, не меняя блок

тик 0
Информация0
=
у
Информация1
=
у
Ввод2
Ввод3
Операция4
=
@counter0number
медиnullnull
свинцаnullnull
снимковnullnull

Два процессора и ячейка между ними. Верхний снимает показания со склада и кладёт их в память, нижний читает оттуда и печатает сумму. Каждый занят своим делом и идёт со своей скоростью.

Ради скорости. Программа на сто строк в микропроцессоре проходит итерацию раз в пятьдесят тиков. Разрежьте её пополам, поставьте два процессора — и каждая половина пойдёт вдвое чаще. Это единственный способ ускорить работу, не меняя блок: setrate скорость только снижает.

Ради порядка. Отдельный процессор на турели, отдельный на завод, отдельный на табло: каждый маленький, каждый понятен, поломка одного не роняет остальное.

Ради связей. У процессора ограничена дальность связи: микропроцессор дотягивается на десять клеток. База шире — значит, процессоров будет несколько просто по географии.

Способ Годится для
ячейка памяти чисел и объектов, много и надолго
чтение переменных соседа одного-двух значений, без лишних блоков
глобальный флаг «да/нет» между мировыми процессорами
флаг юнита пометки, которая должна ехать с юнитом
само здание когда сосед и так видит тот же склад

Ячейка — самый обычный вариант: она видна обоим, переживает правку программы и держит шестьдесят четыре значения.

Никто. Процессоры не синхронизированы: каждый идёт своим чередом, когда ему выпадает тик. Из этого следуют две вещи.

Много. Игра спокойно держит сотни процессоров, и упирается обычно не она, а человек: десять процессоров, которые общаются через одну ячейку, отлаживать тяжело.

Разумная середина — разделять по задачам, а не по строкам: один процессор отвечает за одну вещь целиком и не лезет в чужую.

Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.