Как актер akka может взаимодействовать между потоками

Я прочитал документацию akka и не могу четко понять взаимодействие потоков при использовании akka. Документы могут опустить это как очевидное, но для меня это не так очевидно.

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

Вы можете выполнить огромную цепочку актеров, переключающихся по прямой линии. Каждый прием выполняет небольшую неблокирующую операцию -и заставляет другой прием работать дальше. Нет цикла обработки событий, который может обрабатывать сообщения вне системы акторов.

Я хотел бы перехватить запрос из другого потока, выполнить операции управления и дождаться другого сообщения.

Есть несколько вариантов использования, которые определяют мои потребности.

  1. Есть поток, который постоянно опрашивает данные из некоторых источников. Как только данные соответствуют шаблону, он вызывает обработчик, управляемый событием -, основанный на субъектах.Логический контроллер принимает решение и передает его исполнителям. Должно быть два постоянных потока. Один поток постоянно работает над опросом, а другой работает асинхронно, чтобы контролировать его работу. Вы не должны допускать акторов akka к первому потоку, так как они нарушили периоды опроса, а первый поток не должен блокировать акторов, поэтому им нужен другой поток.

  2. Есть какая-то двухсторонняя -настольная игра. На одной стороне есть поток контроллера, который планирует расчет времени работы, взаимодействует с сервером платы и так далее. Другой поток — это тяжелый вычислительный поток, который перебирает различные варианты и не может быть написан на akka, поскольку имеет блокирующий характер

. Я знаю о существующих фьючерсах akka, но они представляют собой рабочую задачу, которая запускается после запуска и закрывается после выполнения своей цели. Фьючерсы хорошо сочетаются с акторами akka, но не могут выразить зацикленные рабочие потоки.

Система акторов Akka включает в себя различные виды циклов сетевых событий. Вы можете использовать его встроенный -в системе удаленного актора или известный протокол 0mq. Но использование сети для взаимодействия потоков кажется мне чрезмерным.

Как предполагается склеить нить не -akka с нитью akka? Должен ли я написать пару специальных процедур для безопасной передачи сообщений в потоке -?

8
задан ayvango 2 March 2012 в 22:54
поделиться