Проект Templet

акторный фреймворк для запуска задач
на множестве ядер, кластерах и в облаках
templet.ssau.ru

Инструменты пользователя

Инструменты сайта


presentations:bricksmove

Это старая версия документа!


Исходный алгоритм


НАЧАЛЬНОЕ СОСТОЯНИЕ:

1. Рабочие(акторы) образуют цепочку, начинающуюся рабочим типа Начальный, заканчивающуюся рабочим типа Конечный.

 Внутри цепочки находятся рабочие типа Средний. Цепь из рабочих располагается слева-направо.
 

2. У рабочего типа Начальный имеется непустая куча кирпичей.

3. Рабочий типа Средний получил подтверждение о готовности взять кирпич от рабочего справа

 и сам готов взять кирпич у рабочего слева. Рабочий типа Конечный готов взять кирпич от рабочего слева.
 

4. Рабочий типа Начальный взял первый кирпич и подал его рабочему типа Средний справа (который готов взять кирпич).

ВХОД: сообщение - поданый кирпич (слева) или готовность взять кирпич (справа);

    актор - рабочий, получающий это "сообщение".
  

1. Если тип рабочего - Начальный. 1.1. Если куча не пустая, то взять кирпич из кучи (иначе ничего не делать) и выполнять 1.1.1. 1.1.1. Подать кирпич рабочему справа.

2. Если тип рабочего - Средний. 2.1. Если рабочий слева подал кирпич и рабочий справа готов взять кирпич (иначе ничего не делать), то выполнять 2.1.*. 2.1.1. Взять кирпич у рабочего слева, подать кирпич рабочему справа. 2.1.2. Показать рабочему слева, что готов взять следующих кирпич.

3. Если тип рабочего - Конечный. 3.1. Взять кирпич у рабочего слева, положить в новую кучу. 3.2. Если только что положенный кирпич - не последний, то показать рабочему слева, что готов взять следующий кирпич. 3.3. Если только что положенный кирпич - последний, то КОНЕЦ работы алгоритма.

Алгоритм «с тележками» (сообщениями).


НАЧАЛЬНОЕ СОСТОЯНИЕ:

1. Рабочие образуют цепочку, начинающуюся рабочим типа Начальный, заканчивающуюся рабочим типа Конечный.

 Внутри цепочки находятся рабочие типа Средний. Цепь из рабочих располагается слева-направо.

2. У рабочего типа Начальный имеется непустая куча кирпичей.

3. У каждого рабочего, кроме рабочего типа Конечный, имеется тележка (объект-сообщение).

 Тележка может находится рядом с некоторым рабочим (access(тележка)=true) или катиться к рабочему (access(тележка)=false).
 Чтобы передать кирпич рабочий кладет его на тележку и толкает тележку некоторому рабочему (send(тележка, рабочий)).
 Чтобы получить следующий кирпич рабочий толкает пустую тележку назад. Все тележки в начале пусты.
 

3. Тележки рабочих типа Средний находятся у своих владельцев.

4. Рабочий типа Начальный взял первый кирпич, положил в свою тележку и толкнул её рабочему типа Средний справа от него.

ВХОД: сообщение - пустая тележка или тележка с кирпичем;

    актор - рабочий, к которому подкатилась тележка.
  

1. Если тип рабочего - Начальный. 1.1. Если куча не пустая, то взять кирпич из кучи (иначе ничего не делать) и выполнять 1.1.*. 1.1.1. Положить кирпич в тележку. 1.1.2. Толкнуть тележку рабочему справа.

2. Если тип рабочего - Средний. 2.1. Если подъехала тележка от рабочего слева и подъехала (или стоит в начале) собственная тележка, то выполнять 2.1.*. 2.1.1. Взять кирпич из тележки слева, толкнуть тележку рабочему слева. 2.1.2. Обработать кирпич (это - выполнение задачи). 2.1.3. Положить кирпич в свою тележку, толкнуть её рабочему справа.

3. Если тип рабочего - Конечный. 3.1. Взять кирпич из тележки, положить в новую кучу. 3.2. Если только что положенный кирпич - не последний, то толкнуть пустую тележку рабочему слева. 3.3. Если только что положенный кирпич - последний, то КОНЕЦ работы алгоритма.

presentations/bricksmove.1648374429.txt.gz · Последнее изменение: 2022/03/27 09:47 (внешнее изменение)