No es tanto que el modelo de actor reemplazará hilos; a nivel de la CPU, los procesos seguirán teniendo múltiples hilos que se programan y ejecutan en los núcleos del procesador. La idea de los actores es reemplazar esta complejidad subyacente con un modelo que, según sus defensores, les facilita a los programadores la escritura de código confiable.
La idea de los actores es tener hilos de control separados (procesos en el lenguaje de Erlang) que se comunican exclusivamente mediante el envío de mensajes. Un modelo de programación más tradicional sería compartir memoria y coordinar la comunicación entre hilos utilizando mutexes. Esto aún sucede bajo la superficie en el modelo de actor, pero los detalles se abstraen y el programador recibe primitivas confiables basadas en el envío de mensajes.
Un punto importante es que los actores no necesariamente asignan 1-1 a los hilos - en el caso de Erlang, definitivamente no lo hacen - normalmente habría muchos procesos de Erlang por hilo del kernel. Entonces tiene que haber un programador que asigne actores a los hilos, y este detalle también se abstrae del programador de la aplicación.
Si está interesado en el modelo de actor, es posible que desee ver la forma en que funciona en Erlang o Scala.
Si le interesan otros tipos de nuevo carácter concurrente, puede consultar software transactional memory, un enfoque diferente que se puede encontrar en clojure y haskell.
Cabe mencionar que muchos de los intentos más agresivos en la creación de modelos de concurrencia avanzada parecen estar sucediendo en los lenguajes funcionales.Posiblemente debido a la creencia (yo bebo un poco de esta ayuda de kool) la inmutabilidad hace que la concurrencia sea mucho más fácil.
Iría más lejos y diría que la inmutabilidad aumenta la robustez del sistema. La concurrencia es una dimensión de la complejidad del software donde la diferencia de robustez es muy obvia. Los sistemas muy complejos pueden beneficiarse del uso de la inmutabilidad incluso sin necesidad de satisfacer problemas de simultaneidad. –
Además, recuerde que el modelo de actor también se puede aplicar en una red, para desarrollar un modelo asincrónico de procesamiento de solicitudes. De hecho, dado que multi-core va a ser la regla, esta abstracción podría ser incluso interesante en un nivel de os api (al menos lo es para mí). – Coyote21