DRAKON.SU
https://forum.drakon.su/

ДРАКОН, акторы и передача сообщений
https://forum.drakon.su/viewtopic.php?f=78&t=5308
Страница 1 из 1

Автор:  Степан Митькин [ Среда, 31 Декабрь, 2014 12:44 ]
Заголовок сообщения:  ДРАКОН, акторы и передача сообщений

Тесная дружба между ДРАКОНом и конечными автоматами хорошо известна:
http://drakon-editor.sourceforge.net/auto.html

Пришло время ДРАКОНу попробовать себя в модели акторов.
Акторы — более масштабируемая и надёжная замена многопоточному программированию.

Для проведения опытов был выбран язык C# (ДРАКОН-C#, разумеется).

Были написаны два тестовых приложения. Эти приложения демонстрируют параллельное программирование с ДРАКОН-акторами.

Решаются задачи трёх типов:
1. Неблокирующий ввод-вывод
2. Фоновые вычисления на процессоре.
3. Управление интерфейсом пользователя (окнами и виджетами WPF).

Результат описан здесь:
http://drakon-editor.sourceforge.net/actors.html

Скачать исходники можно здесь:
https://github.com/stepan-mitkin/actor-http
Требуется DRAKON Editor 1.25 и Visual Studio 2013

Автор:  Дмитрий Дагаев [ Вторник, 14 Апрель, 2015 15:08 ]
Заголовок сообщения:  Re: ДРАКОН, акторы и передача сообщений

Мои замечания в свете появления иконки Событие.

В Вашем примере заявлено "DRAKON makes actors visual", но получение актором сообщения скрыто в иконке Выбор за словом receive (рис сверху). Как я понял,
Цитата:
1. Неблокирующий ввод-вывод
прячется за словом receive.

Предлагаю явно поставить иконку Событие, а в иконке Выбор анализировать результат recv этого события.

Вложения:
SteamPump0.png
SteamPump0.png [ 11.74 КБ | Просмотров: 5275 ]
SteamPump1.png
SteamPump1.png [ 8.85 КБ | Просмотров: 5275 ]

Автор:  Пётр Кушнир [ Вторник, 14 Апрель, 2015 16:21 ]
Заголовок сообщения:  Re: ДРАКОН, акторы и передача сообщений

А почему не Оберон?

Автор:  Дмитрий Дагаев [ Вторник, 14 Апрель, 2015 16:38 ]
Заголовок сообщения:  Re: ДРАКОН, акторы и передача сообщений

Пётр Кушнир писал(а):
А почему не Оберон?

То, что я рисовал для Дракона, сделано в BlackBox.

Автор:  Дмитрий Дагаев [ Вторник, 14 Апрель, 2015 17:48 ]
Заголовок сообщения:  Re: ДРАКОН, акторы и передача сообщений

Теперь о блокирующем и неблокирующем вводе. В actor model это Synchronous Messaging vs Asynchronous Messaging https://rocketeer.be/articles/concurrency-in-erlang-scala/.

Прилагается пример - алгоритм грузчика. В первом случае нужна иконка Ввод, которая останавливается пока не получит данные (Cargo).
Во втором случае (CargoA) событие приходит извне (по схеме слева).

Для Оберонов второй случай аналогичен шине сообщений BlackBox, первый случай я, скажем, реализовывал через семафоры в подсистеме Coroutines.

Событие посылается извне с пом иконки Вывод (не показано).

Вложения:
Cargo.png
Cargo.png [ 3.74 КБ | Просмотров: 5257 ]
CargoA.png
CargoA.png [ 4.23 КБ | Просмотров: 5257 ]

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/