Это не так много, что модель актер заменит темы; на уровне процессора процессы будут по-прежнему иметь несколько потоков, которые планируются и запускаются на процессорных ядрах. Идея актеров заключается в том, чтобы заменить эту сложную сложность моделью, которая, по мнению ее сторонников, упрощает программистам писать надежный код.
Идея актеров состоит в том, чтобы иметь отдельные потоки управления (процессы на языке Эрланга), которые общаются исключительно путем передачи сообщений. Более традиционной моделью программирования было бы совместное использование памяти и координация обмена данными между потоками с использованием мьютексов. Это все еще происходит под поверхностью в модели актера, но детали абстрагируются, а программисту даются надежные примитивы, основанные на передаче сообщений.
Важным моментом является то, что актеры не обязательно отображают 1-1 в потоки - в случае с Erlang они определенно не работают - обычно будет много процессов Erlang для каждого потока ядра. Таким образом, должен быть планировщик, который назначает участников потокам, и эта деталь также абстрагируется от прикладного программиста.
Если вас интересует модель актера, вы можете посмотреть, как она работает в Erlang или Scala.
Если вы заинтересованы в других типах новой параллелизма, вы можете посмотреть на software transactional memory, другой подход, который можно найти в clojure и haskell.
Следует отметить, что многие более агрессивные попытки создания современных моделей параллелизма, по-видимому, происходят на функциональных языках.Возможно, из-за веры (я сам выпиваю часть этого kool-aid), что неизменность делает параллелизм намного проще.
Я пошел дальше и скажу, что неизменность повышает надежность системы. Параллельность - это один из аспектов сложности программного обеспечения, где разница в надежности очевидна. Очень сложные системы могут извлечь выгоду из использования неизменяемости даже без необходимости решения проблем параллелизма. –
Кроме того, помните, что модель актера также может применяться в сети, для разработки асинхронной модели обработки запросов. На самом деле, учитывая, что многоядерность будет правилом, эта абстракция может быть даже интересной на уровне os api (по крайней мере, для меня). – Coyote21