2011-08-09 8 views
6

Últimamente he estado leyendo muchos artículos sobre cómo la programación concurrente es difícil, y cómo la programación concurrente con estado compartido es casi imposible. Entonces, los lenguajes como Erlang (creo que esto está activado, si la pregunta aún tiene sentido) usan el modelo Actor para la concurrencia y no tienen estado compartido entre los hilos. Ahora, en mi tiempo programando sistemas concurrentes, no he encontrado que la concurrencia sea tan difícil, pero en general puedo adaptar casi cualquier problema al paradigma productor/consumidor y vivir sin mucho (si es que hay alguno) estado compartido. ¿Aunque es correcto? ¿Las colas de mensajes entre hilos realmente están compartidas? ¿O es el modelo productor/consumidor de programación concurrente realmente un ejemplo concreto del modelo Actor (esa es mi verdadera pregunta). ¿Pensamientos?¿El modelo de productor/consumidor es igual de actor?

Respuesta

4

Técnicamente, los mensajes compartidos representan el estado de la aplicación general, pero solo si los productores y los consumidores son en sí mismos apátridas (de lo contrario, simplemente representan los estados del medio de intercambio de mensajes/a). El modelo de productor/consumidor no es tanto un ejemplo del modelo de actor como lo es cada productor y consumidor individual. Los productores (que también pueden ser consumidores, ya sea de las mismas colas de mensajes compartidos o de fuentes externas) hacen lo que hacen y escuchan algún mensaje que se pone en cola. La cola misma puede considerarse un actor, aunque pasivo, ya que recibe/contiene mensajes y puede distribuirlos (o simplemente esperar a que se tomen). Los consumidores son actores en el sentido de que reciben/reciben mensajes de la cola compartida y hacen un trabajo basado en esos mensajes.

Así que, básicamente, mi respuesta es que el modelo productor/consumidor no es un ejemplo del modelo Actor, sino más bien un ejemplo de una colección de actores que trabajan en un entorno compartido.

+0

¿Hay algo intrínsecamente en el paradigma del actor que dice que no se pueden tener múltiples actores? – Gandalf

+0

De la forma en que lo veo, el paradigma de actor es más representativo de una entidad, mientras que el paradigma productor/consumidor es más representativo de un sistema. – yoozer8

+0

Aunque, supongo que podría considerar un sistema de productor/consumidor como Actor si existe en un entorno más amplio con otras entidades y puede interactuar con otras entidades en un sistema más grande. – yoozer8

Cuestiones relacionadas