Модель Actor для замены модели потоков?

Я прочитал главу в книге (Семь языков за Семь Недель Bruce A. Tate) о Matz (Изобретатель Ruby) говорящий, что 'Я удалю поток и добавлю агентов, или некоторые другие более усовершенствованные функции параллелизма.

  • Почему и как модель агента может быть усовершенствованной моделью параллелизма, которая заменяет поточную обработку?
  • Что другие модели являются 'усовершенствованной моделью параллелизма'?
21
задан prosseek 26 March 2010 в 15:40
поделиться

3 ответа

Дело не в том, что модель актора заменит потоки; на уровне процессора процессы по-прежнему будут иметь несколько потоков, которые запланированы и выполняются на ядрах процессора.Идея акторов состоит в том, чтобы заменить эту базовую сложность моделью, которая, как утверждают ее сторонники, облегчает программистам написание надежного кода.

Идея акторов состоит в том, чтобы иметь отдельные потоки управления (процессы на языке Erlang), которые общаются исключительно посредством передачи сообщений. Более традиционной моделью программирования было бы совместное использование памяти и координация взаимодействия между потоками с помощью мьютексов. Это все еще происходит под поверхностью в модели акторов, но детали абстрагируются, и программисту предоставляются надежные примитивы, основанные на передаче сообщений.

Одним из важных моментов является то, что субъекты не обязательно отображают 1-1 в потоки - в случае Erlang они определенно этого не делают - обычно на каждый поток ядра приходится много процессов Erlang. Таким образом, должен быть планировщик, который назначает участников потокам, и эта деталь также абстрагируется от программиста приложения.

Если вас интересует модель акторов, вы можете взглянуть на то, как она работает в Erlang или Scala .

Если вас интересуют другие типы новых проблем параллелизма, вы можете изучить программную транзакционную память - другой подход, который можно найти в clojure и haskell.

Следует упомянуть, что многие из наиболее агрессивных попыток создания продвинутых моделей параллелизма, по-видимому, делаются на функциональных языках. Возможно, из-за убеждения (я сам пью эту kool-помощь), что неизменяемость значительно упрощает параллелизм.

15
ответ дан 29 November 2019 в 21:49
поделиться

Я сделал этот вопрос своим любимым и жду ответов, но, поскольку их еще нет, вот мой ..

Почему и как модель акторов может быть расширенной моделью параллелизма, которая { {1}} заменяет потоки?

Акторы могут избавиться от изменяемого общего состояния, которое очень сложно правильно кодировать. (Насколько я понимаю,) акторы могут в основном мыслить как объекты со своими собственными потоками. Вы отправляете сообщения между акторами, которые будут помещены в очередь и использованы потоком внутри актора. Таким образом, любое состояние в акторе инкапсулировано и не будет использоваться совместно. Так что правильно писать код легко.

см. Также http://www.slideshare.net/jboner/state-youre-doing-it-wrong-javaone-2009

Какие еще модели являются «расширенной моделью параллелизма '?

см. http://www.slideshare.net/jboner/state-youre-doing-it-wrong-javaone-2009

3
ответ дан 29 November 2019 в 21:49
поделиться

См. Программирование потока данных . Это подход, который является слоем поверх обычного дизайна ООП. Вкратце:

  • есть сцена, где находятся Компоненты ;
  • Компоненты имеют Порты : Производители (вывод, который генерирует сообщения) и Потребители (ввод, которые обрабатывают сообщения);
  • между Компонентами предопределены Сообщения : порт Производителя одного Компонента связан с Потребителем другого.

Программирование осуществляется на трех уровнях:

  • написание системы потока данных (язык, фреймворк / сервер, компонентный API),
  • написание компонентов (системные, базовые и предметно-ориентированные),
  • создание программа потока данных: размещение компонентов в сцене и определение сообщений между ними.

Статьи в Википедии - хорошая отправная точка для понимания бизнеса: http://en.wikipedia.org/wiki/Flow-based_programming См. Также «модель акторов», «программирование потока данных. "и т. д.

2
ответ дан 29 November 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: