Актеры (scala / akka): подразумевается ли, что к методу приема будет доступен потокобезопасный способ? - PullRequest
11 голосов
/ 14 октября 2011

Я предполагаю, что сообщения будут получены и обработаны безопасным способом.Тем не менее, я читал (некоторые) документы akka / scala, но пока не сталкивался с ключевым словом 'threadsafe'.

Ответы [ 3 ]

21 голосов
/ 15 октября 2011

Вероятно, потому, что модель субъекта предполагает, что каждый экземпляр субъекта последовательно обрабатывает свой собственный почтовый ящик.Это означает, что никогда не должно происходить, чтобы два или более параллельных потока выполняли код одного экземпляра субъекта.Технически вы можете создать метод в классе актера (потому что он все еще является объектом) и вызывать его из нескольких потоков одновременно, но это будет основным отклонением от правил использования актера, и вы будете делать это «на свой страх и риск»,потому что тогда вы потеряете все гарантии безопасности потоков этой модели.

Это также одна из причин того, почему Akka представила концепцию ActorRef - дескриптор, который позволяет вам общаться ссубъект через передачу сообщений, но не путем непосредственного вызова его методов.

5 голосов
/ 15 октября 2011

Я думаю, что это хорошо документировано: http://doc.akka.io/docs/akka/2.3.9/general/jmm.html

2 голосов
/ 26 июля 2015

Актеры «Тредсаф».Система актеров (AKKA) предоставляет каждому актеру собственную «легкую нить».Это означает, что это не шаг, но система AKKA создаст впечатление, что Actor всегда работает в своем потоке для разработчика.Это означает, что любые операции, выполняемые в результате воздействия на сообщение, для всех целей являются поточно-ориентированными.

Однако вы не должны подрывать AKKA, используя изменяемые сообщения или публичное состояние.Если вы сделаете своих актеров самостоятельными функциональными единицами, они будут поточно-ориентированными.

См. Также: http://doc.akka.io/docs/akka/2.3.12/general/actors.html#State

и http://doc.akka.io/docs/akka/2.3.12/general/jmm.html для более углубленного изучениямодель памяти АККА и то, как она решает проблемы «протектора».

...