Какая разница между артистами Эрланга, Scala Актерами и теоретической концепцией "Актер"?

Как я знаю, модель Actor - это теория о concurrency. Erlang и Scala реализуют эту теорию, но ни одна из их реализаций полностью не соответствует модели Actor.

С точки зрения компьютерных ученых, каковы различия между концепцией "Актер" в Эрланге, Scala и теоретической моделью?

Ответ 1

Я думаю, что самая большая разница - это реализация, я не уверен, соответствует ли она. В Erlang у вас есть несколько свойств:

  • процессы не обмениваются памятью, поэтому ошибка в процессе не может напрямую переполняться в другие процессы.
  • сбор мусора работает над одним процессом за раз, не существует глобальной блокировки VM

Это для меня основные отличия, почему я считаю, что модель актера Erlang превосходит другие системы, включая Scala.

В более практическом подходе довольно часто реализация актера Scala достаточно хороша для использования. Однако существует мало случаев использования (поддерживая жесткие требования к задержкам, например, для того, чтобы иметь такую ​​же задержку для p99 как p50), где ваш единственный вариант - использовать Erlang.