La Web del Programador: Comunidad de Programadores
 
    Pregunta:  2209 - EJECUTAR DOS FUNCIONES DE FORMA SIMULTANEA EN UN PROGRAMA
Autor:  Jesus Baez Ambriz
Como puedo hacer para, en un programa de C poder ejecutar más de una funcion en un programa, es decir, tocar una melodia y una animacion al la vez o realizar lectura de variables

  Respuesta:  Pepe Tony Martin Barba
Que hay? mira no recuerdo biuen los parametros porque hace tiempo que lo hice pero al momento de empezar la programacíon enlazas los parametros de ejecución creo que es

int tar = DETECT,modo; A, B
o
gets(cadena);// A,B
system(cadena);// A,B

donde A es la musica y B es la animación.
Salu2 y espero te sirva.

  Respuesta:  Paco
Entiendo que lo quieres hacer bajo MS-DOS, si es así, tengo un programa para hacer música .MOD, después en el mismo programa viene una subrutina .C para leer el anterior fichero. Por último si quieres ejecutar la lectura del fichero de sonido y una animación, abres un proyecto incluyes los dos programas y aparentemente se está escuchando y viendo la animación al mismo tiempo.
Como ya te he dicho tengo el programa para hacer música, la subrutina para leerla, y un proyecto hecho para que los veas, si te interesa me avisas ....

  Respuesta:  Daniel Azkona Coya
No expecificas el S.O. bajo el que quieres programar, pero bueno, intentaré responderte.

Si es W32, dependiendo del compilador tienes unos objetos que pueden gestionar Threads, resolviendo tu problema.

Si es un entorno monoproceso, la única solución es crear un sistema de threads propio. Sería programar una pila de procesos y luego gestionarlos con el sistema (FIFO, LIFO, Round Robin, ...) que mas te convenga.
Por ejemplo, en el caso de musica y animación,
tienes primero que delimitar bien que requiere mas tiempo de proceso. Y dependiendo de este, hacer funciones (una que saque la animación y otra que saque la música), que sea llamadas alternativamente y que se esten ejecutando durante un tiempo muy corto (duración dependiendo del proceso que necesite).

No se si te he ayudado algo, pero si quieres ampliar o saber algo más, mandame un mail.

Un saludo