PDA

Ver la versión completa : Una duda con signal(id proceso,señal);



masteries
27/12/2008, 23:47
¡Saludos a todos!

Ya se encuentra próximo el momento de estrenar la primera fase de mi juego en Fénix; ya sé que dije que para Diciembre estaría pero los de Eastfront me han tenido muy ocupado ( http://www.eastfront.co.nr/ , por si quereis ver mi trabajo en el mod Eastfront).

Después de disculparme por el restraso en lo prometido; me encuentro con una duda a la que le he dado una resolución lógica, pero no sé si acertada.

El caso es que tengo muchas sentencias "signal(id proceso,s_kill/s_sleep..etc)"
y en algunos casos éstas se ejecutan aún cuando la id del proceso no es válida pues el proceso no existe, pero aún así se ejecutan y aparentemente todo va bien.

He pensado que lo que puede estar sucediendo, es que mande cerrarse o dormirse al proceso señalado por id_proceso, y en caso de no existir este proceso, se dé la coincidencia de que mande cerrar algún otro proceso
diferente y lo estropee todo.

Por eso miro antes si el proceso existe (esto es interno al juego, son los personajes y su vida ha de ser mayor de cero para que existan sus procesos) antes de ejecutar el signal. ¿Esta solución es la acertada? ¿O en cambio Fénix obvia estas sentencias signal por no tener id_proceso correctamente inicializado y me podría ahorrar algunos if?

Gracias de antemano.

OscarBraindeaD
28/12/2008, 09:48
Hola,

hasta donde yo sé, si le haces un signal a un proceso que no existe, te dará error. Es mejor preguntar antes (con if exists(id_proceso)) si éste existe y luego mandarle la señal. Algunos IFs, si son necesarios, tampoco van a hacer que se resienta el rendimiento del programa y, a cambio, te vas a evitar casques.

Salud

animanegra
28/12/2008, 12:44
Supongo que tendras alguna tabla con los identificadores de donde los tomas para mandar las señales. ¿No seria mejor el tema de eliminar cuando muera el proceso el identificador de la tabla y listos?, si lo que quieres es eliminar saltos innecesarios en el codigo.

masteries
28/12/2008, 16:57
Vale, gracias a todos. Que va, el Fénix no me da error al hacer un signal a un id_proceso que no existe, no existe el proceso pero si la variable que guarda el identificador. Por eso he optado por mantener los if que comprueban si el personaje en cuestión sigue con vida, antes de "dormirlo"...etc.

En realidad no me hace falta ninguna tabla con los identificadores, pues con 4 identificadores me estoy apañando, el resto (enemigos, sprites animados...) despiertan automaticamente al entrar en pantalla o mueren y dejan de existir si es un enemigo que has matado, o desaparecen todos al cambiar de nivel al usar let_me_alone() .