Erlang/OTP Procesos

Etiquetas de Technorati: ,,

erlang

Para poder desarrollar un sistema en Erlang, lo primero es entender como funciona su run-time, y uno de los primeros puntos, son los procesos, ver como se gestiona la base de toda aplicación Erlang.

Los procesos en Erlang estas completamente protegidos manteniendo el entorno seguro. Sobre todo pensando que será el mismo proceso ejecutado concurrentemente. En caso de catástrofe solo el proceso en si, se ve afectado, permitiendo a los otros seguir funcionando.

Para iniciar el desarrollo de un programa Erlang lo primero es plantearse que actividades se pueden identificar como un proceso separado.

Los procesos Erlang no son los típicos Threads/Hilos generados desde el S.O.(Sistema Operativo). A diferencia de estos, son mucho más ligeros, ya que son implementados por el run-time de Erlang. Siendo cada proceso independiente del otro, ya que no se comparte memoria con los otros procesos en ejecución.

Los Threads/Hilos de S.O. reservan algunos Megabytes de espacio para direcciones en su PILA (Heap), produciendo el bloqueo en caso de que se llegue al limite. Los procesos Erlang comienzan solo con un par de bytes y crecen o se achican según sean necesario.

Para crear un proceso en Erlang se utiliza la función:

spawn

Para la siguiente función:

io:format("Hola Mundo!")

Si la invocamos como un proceso:

spawn(io, format, ["Hola Mundo!"])

De esta forma se genera  un proceso que ejecutara io:format(“Hola Mundo!”) de forma independiente del proceso que lo invoca. La función spawn tiene algunas variantes, pero la forma presentada es la más simple.

Les adjunto un Link donde podrán ver un resumen de lo que es Erlang y su sintaxis de programación: http://www.slideshare.net/SinarShebl/introduction-to-erlang-final

Continuando con los procesos; la forma de comunicarse de estos, es mediante mensajes. Cada proceso tiene un Mailbox, donde se almacenan los mensajes entrantes a medida que llegan, independiente si el proceso se encuentra actualmente ocupado.

Al ser los procesos independientes, no se pueden corromper unos a otros porque no comparten información/memoria/etc. Esta es una de las características especiales de Erlang La Tolerancia a Fallo (Fault Tolerance).

Espero se haya entendido,

Saludos, Marco!

[tweetmeme only_single=”false”]
Advertisements

Agregar un comentario

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Google+ photo

You are commenting using your Google+ account. Log Out / Cambiar )

Connecting to %s