Estados de un proceso

Los procesos son los diferentes elementos de un programa (objetos del juego); éstos pueden pasar por diferentes estados al crearse, destruirse o recibir determinadas señales por medio de la función signal().

proceso vivo o despierto

Si un proceso se está ejecutando (está interpretando las sentencias comprendidas entre su BEGIN y su END) se dice que está vivo.

proceso muerto

Cuando un proceso finaliza (porque llega su END en la ejecución, porque ejecute un RETURN o porque reciba una señal s_kill o s_kill_tree) se dice que ha muerto.

proceso dormido

Un proceso puede recibir la señal s_sleep (o s_sleep_tree) y, entonces, pasará a estado dormido; en este estado el proceso se comporta como si estuviera muerto, sólo que no lo está pues, en cualquier momento, puede recibir una señal s_wakeup y volver a estado vivo o despierto. También se puede matar a un proceso que está dormido.

proceso congelado

La señal s_freeze (o s_freeze_tree) pasa a estado congelado un proceso. En este estado el proceso se queda inmovilizado, se sigue viendo y el resto de los procesos lo pueden seguir detectando (en las colisiones, por ejemplo), pero no se ejecuta (deja de interpretar sus sentencias de código). Estará en este estado hasta que reciba otra señal que le cambie de estado o lo mate.

Un proceso congelado puede ser controlado (movido) por otro proceso, manipulando directamente sus variables.


Siempre que se envía una señal a un proceso con el fin de cambiarle de estado, ésta no tendrá efecto si el proceso se está ejecutando hasta que llegue a su próxima visualización (FRAME). Si el proceso no se estuviera ejecutando, entonces la señal tendría efecto de inmediato.

No se deben enviar señales a procesos inexistentes (a un código identificador que no se corresponda a ningún proceso).

Si se intenta poner a un proceso en el estado en el que ya está, la señal será ignorada.


Ver: Jerarquías de procesos