|
Taller
|
| >> Taller >> Curso De Iniciación A DIV by Wakroo >> Cap. 8: Jerarquía de procesos. |
Ahora que ya sabemos lo que son los códigos identificadores y cómo usarlos vamos a conocer a la gran familia que forman los procesos.
El primer proceso que se ejecuta en todos los programas es el main que, aunque no tiene un nombre específico y por lo tanto no se puede interaccionar con él de la misma forma que con los demás procesos, es el PADRE de todos los procesos. Él es el que crea (llama) a los demás procesos que se van a ejecutar, convirtiéndolos en sus HIJOS. Puesto que estos procesos tienen el mismo padre, se puede decir que son HERMANOS. A su vez, estos procesos pueden llamar a otros procesos, por lo que se convertirán a su vez en padres de estos procesos, que serán sus hijos y hermanos entre ellos. Extendiendo el árbol familiar de esta manera se puede llegar hasta donde uno quiera: abuelos, bisabuelos, tíos, sobrinos,.. Pero las relaciones principales entre procesos son ésas.
¿Y de qué sirve esto? Pues para poder interaccionar con los procesos. Todos los procesos tienen una serie de variables locales predefinidas que guardan estas relaciones. father guarda el código identificador del proceso que lo llamó, son el del último proceso que lo ha llamado, bigbro el del proceso que su padre llamó justo antes que él y smallbro el del proceso que llamó justo después. Con estas variables se puede tener controlada a toda la parentela cercana de un proceso con facilidad. Se puede, por ejemplo, matar al proceso que te ha llamado porque ya no es útil o consultar una de sus variables locales (especialmente interesante cuando tenemos un proceso que llama a otra parte independiente del mismo personaje u objeto y queremos que se vaya moviendo todo junto).
Otra utilidad de la jerarquía de procesos es usar las señales específicas para afectar a familias enteras (ver el capítulo anterior). Si creamos un proceso juego() que es el encargado de llamar a todos los demás procesos del juego (cuando se elige la opción "Jugar" del menú o algo similar) luego podemos usar la señal s_freeze_tree para congelarlo todo y crear una pausa, controlada por otro proceso que no hayamos llamado desde el proceso juego() (porque si no el de pausa también se congelaría y luego no podríamos descongelarlo todo desde ahí). Se puede usar para muchas cosas, sólo es cuestión de pensar un poco.
Bueno, yo creo que este es un buen sitio para parar. A grandes rasgos, ya os he explicado todos los pequeños truquillos para que podáis empezar a investigar y a hacer cosas por vuestra cuenta. Así que ya sabéis, ahora toca que os pongáis a desarrollar vuestros propios proyectos y que luego los deis a conocer a toda la comunidad para que pueda disfrutar de ellos. ;-) Para cualquier duda, pregunta, sugerencia o soborno que queráis mandarme ya sabéis, lordwakroo@yahoo.es. Un saludo y que la Fuerza os acompañe.