
El motor de Head over Heels ya funciona concurrentemente. He conseguido separar en dos subprocesos su ejecución. Como comenté, por un lado está el subproceso principal que se apoya en Allegro y se encarga de dibujar los datos y por otro está el subproceso de actualización de las máquinas de estados de todos los elementos.
Las diferencias son muy llamativas en cuanto a rendimiento. Teniendo en mente que tengo un Core 2 Duo E6600, es decir, un microprocesador de dos núcleos, esto fue lo que ha pasado:
- La versión anterior chupaba un 50% de CPU, es decir, se comía el 100% de un núcleo. Bien es verdad que no había retardos en la ejecución. El bucle de dibujo y actualización se ejecutaban al ritmo que daba de sí el micro.
- La versión concurrente sin retardos chupaba el 100% de la CPU, es decir, la tarea de dibujo se comía todo un núcleo y la tarea de actualización todo el otro. En Linux no me ha sorprendido pero me he quedado flipado porque en Windows pasa lo mismo.



- En la última versión he introducido retardos: el subproceso de actualización se ejecuta cada 10 milisegundos, realmente no hace falta que sea más rápido, y el de dibujo se ejecuta cada 1 milisegundo. El resultado para el espectador, ni que decir tiene, que es el mismo que en la versión sin retardos. SIN EMBARGO, el consumo de CPU baja hasta el 10% de tope máximo. En ocasiones es del 0%, lo cual tiene lógica porque coincide con los instantes en los que los dos subprocesos están durmiendo.
A esto se le llama optimar recursos.
