Я довольно новичок в концепции Akka и концепциях параллелизма. И из документов Akka я понял, что только одно сообщение в почтовом ящике Actor будет обрабатываться одновременно. Таким образом, один поток будет обрабатывать состояние Актера за раз. И я сомневаюсь в том, что объявление переменной состояния/данных Actor как изменчивого - «Var» (только когда «Val» не подходит) не приведет к возникновению несогласованных состояний Actor в случае параллелизма. Я использую Scala для разработки. В следующем Мастер-актере детали рабочих хранятся в изменяемой переменной «Рабочие». Будет ли проблема с параллелизмом?Объявление переменных состояния актора как изменчивых
class Master extends PersistentActor with ActorLogging {
...
private var workers = Map[String, WorkerState]()
...
}
Спасибо за ваш ответ. Является ли эта легкая актерская нить обработкой полных функций актера или только для обработки сообщений в своем почтовом ящике? –
* концептуальная * легкая актерская нить выполняет все функции в актере. С момента, когда метод приема актера вызывается для сообщения, до тех пор, пока вся логика обработки сообщения не будет выполнена (если вы создаете фьючерсы в указанной логике, это другое обсуждение), все концептуально выполняется в одном поток, и вам гарантировано, что в любой момент времени этот актер обрабатывает только одно сообщение, поэтому вам не нужно блокировать или беспокоиться о параллелизме. – lloydmeta