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 этого события.
|
Автор: | Пётр Кушнир [ Вторник, 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. Событие посылается извне с пом иконки Вывод (не показано).
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |