DRAKON.SU

Текущее время: Пятница, 29 Март, 2024 01:47

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Среда, 31 Декабрь, 2014 12:44 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Тесная дружба между ДРАКОНом и конечными автоматами хорошо известна:
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 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 145
Откуда: Москва
Мои замечания в свете появления иконки Событие.

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

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


Вложения:
SteamPump0.png
SteamPump0.png [ 11.74 КБ | Просмотров: 5157 ]
SteamPump1.png
SteamPump1.png [ 8.85 КБ | Просмотров: 5157 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Апрель, 2015 16:21 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 21
Откуда: Россия, Ярославль
А почему не Оберон?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Апрель, 2015 16:38 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 145
Откуда: Москва
Пётр Кушнир писал(а):
А почему не Оберон?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Апрель, 2015 17:48 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 145
Откуда: Москва
Теперь о блокирующем и неблокирующем вводе. В 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 КБ | Просмотров: 5139 ]
CargoA.png
CargoA.png [ 4.23 КБ | Просмотров: 5139 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB