int priority=0; // Nivel de prioridad del proceso


Esta variable predefinida es PUBLIC, lo que significa que cada proceso tendrá su propio valor en su variable priority.

En la preparación de cada imagen todos los procesos serán ejecutados en el orden de prioridad establecido por la variable local priority.

Cuanto mayor sea el valor de priority en un proceso, antes será procesado éste en cada imagen. El valor de priority puede fijarse como cualquier número entero dentro del rango (min_int ... max_int); por ejemplo, para establecer el nivel de prioridad de un proceso a 10 se debe utilizar la siguiente sentencia:

  priority=10;

Todos los procesos activos en el programa que tengan el mismo nivel de prioridad serán ejecutados en un orden indeterminado que, además, puede variar de unas ejecuciones del juego a otras.

Por defecto la variable local priority estará inicializada a 0 en todos los procesos creados en el programa, por lo que éstos podrán ser ejecutados en cualquier orden, si no se define el valor de esta variable.

Si se fija la priority de un sólo proceso a un número positivo, como 1, éste será ejecutado antes que el resto de los procesos, y si se fija a un número negativo, como -1, entonces será ejecutado tras el resto (suponiendo que la variable priority del resto no se ha modificado, por lo que sigue valiendo 0).

Cuando se debe fijar la prioridad de los procesos

Cuando un proceso necesite utilizar en sus cálculos datos de otro proceso, suele ser conveniente que se ejecute tras él, definiendo su prioridad más baja, para que al leer los datos del otro proceso, éstos ya estén actualizados.

Por ejemplo, si el proceso B debe situar su gráfico 8 puntos más abajo que el gráfico del proceso A, se debe fijar la prioridad de A mayor que la de B, para que éste se ejecute primero.

De esta forma, cuando el proceso B obtenga su coordenada y sumando 8 a la del proceso A, se realice este cálculo con la coordenada y del proceso A ya actualizada para la siguiente imagen (para asegurar que en cada imagen primero se fijará la coordenada y del proceso A y después la del proceso B).

Para conseguir ésto, como ambas prioridades estarán por defecto a 0, bastaría con definir la prioridad de A como 1, o bien definir la prioridad de B como -1.

Nota: El nivel de prioridad del proceso no tiene nada que ver con el plano de profundidad en el que aparece su gráfico en pantalla, ya que éste se indica en la variable local z. Es decir, que un gráfico se procese antes no implica que su gráfico se pinte antes.


Ver: Datos locales