Red de conocimiento informático - Material del sitio web - Desarrollo Java basado en modelo a seguir

Desarrollo Java basado en modelo a seguir

Para los desarrolladores de software, depurar defectos no deterministas en aplicaciones multiproceso es el trabajo más doloroso, por eso, como a la mayoría de las personas, me encanta usar lenguajes funcionales como Erlang y Scala para la programación concurrente.

Tanto Scala como Erlang utilizan el modelo de rol para la programación concurrente y no utilizan el concepto de subprocesos. La innovación en torno al modelo de rol no se limita al lenguaje en sí. El modelo de rol también puede ser utilizado por roles basados ​​en Java. frameworks como Kilim.

Kilim El uso del modelo de actor es muy intuitivo. Verá más adelante que esta biblioteca hace que la creación de aplicaciones concurrentes sea increíblemente fácil. El conocido artículo The Free Lunch is Over: A Fundamental Turn Toward. Concurrencia en Sofare En este artículo abandona el concepto engañoso de que la Ley de Moore seguirá promoviendo velocidades de reloj de CPU cada vez más altas

Sutter predijo el fin del almuerzo gratis. Ya no será posible aprovechar las mejoras de rendimiento de las aplicaciones de software a través de chips cada vez más rápidos. En cambio, argumentó que para lograr mejoras significativas en el rendimiento de las aplicaciones será necesario aprovechar la arquitectura de múltiples núcleos.

Resulta que tenía razón. Los fabricantes de chips han alcanzado un límite estricto. Las velocidades de los chips se han estabilizado en torno a los GHz durante años a medida que los fabricantes añaden núcleos a los chips cada vez más rápido. La ley de Moore se sigue cumpliendo en el campo de los núcleos múltiples.

Sutter también mencionó que. La programación concurrente permitirá a los desarrolladores aprovechar las arquitecturas de múltiples núcleos, pero agregó que necesitamos urgentemente un modelo de programación en comparación con los modelos de programación proporcionados por varios lenguajes en la actualidad. Modelos de programación concurrente más avanzados

El. El modelo de programación básico de lenguajes como Java se basa en subprocesos. Aunque las aplicaciones multiproceso no son muy difíciles de escribir, todavía existen muchos desafíos para escribirlas correctamente. Una de las dificultades de la programación concurrente es pensar en el uso de concurrencia. threads Hay muchos modelos de concurrencia disponibles hoy en día. Un modelo que es particularmente interesante y reconocido por la comunidad Java es el modelo de rol

Modelo de actor

El modelo de rol es un proceso concurrente diferente. modelado de una manera diferente a los subprocesos que interactúan con bloqueos a través de la memoria compartida. El modelo de roles utiliza el concepto de roles. Los buzones de correo se utilizan aquí para almacenar y recuperar mensajes asincrónicos. por otros roles para el procesamiento. Los buzones separan efectivamente los procesos entre sí sin tener que compartir variables en la memoria.

Los actores actúan como entidades independientes y completamente diferentes y no comparten memoria para comunicarse. De hecho, los actores solo pueden comunicarse. a través de No hay bloqueos ni bloqueos de sincronización en el modelo de rol de comunicación del buzón, por lo que no habrá problemas causados ​​por ellos, como interbloqueos y actualizaciones perdidas graves. Además, el rol puede funcionar al mismo tiempo en lugar de de una manera secuencial determinada. El rol es más seguro (no se requieren bloqueos ni sincronización). El modelo de actor en sí puede manejar el problema de coordinación. En esencia, el modelo de actor facilita la programación concurrente.

El modelo de actor no es un concepto nuevo. Ha existido durante mucho tiempo. Los modelos de concurrencia en algunos lenguajes (como Erlang y Scala) se basan en roles en lugar de subprocesos. De hecho, el éxito de Erlang en el entorno empresarial (Erlang fue creado por Ericsson y tiene un. larga historia en telecomunicaciones) sin duda ha hecho que el modelo a seguir sea más popular y más expuesto, y esto también lo ha convertido en una buena opción para otros Una elección viable de lenguajes Erlang es un ejemplo sobresaliente del enfoque más seguro del modelo a seguir para la programación concurrente