C/Visual C - Duda con for( ; ; )

   
Vista:

Duda con for( ; ; )

Publicado por tipitipi (15 intervenciones) el 03/03/2009 20:45:37
Hola a todos:

Busco ayuda ó aclaración. Espero que me puedan ayudar . . . y si no es así, gracias de todas formas.

Sistema Operativo UNIX.

Mi problema/duda, es el siguiente:

Tengo una palicación desarrollada en ANSI C que está funcionando continuamente dentro de un bucle infinito. El problema que tengo es que si hago un "top" esta aplicación, consume el 99% de la CPU y hciendo pruebas he podido comprobar que es la recursividad de este bucle lo que me genera este problema.

Hay alguna forma de hacer algo para que no consuma tantos recursos ?
Es posible que haya alguna instrucción para liberar recursos de la máquina que se pudiese aplicar al final del "for" ( antes de ejecutar una nueva pasada al bucle infinito )

En fin, a continuación expongo de forma esquemática la estructura del código que utilizo en mi aplicación:

void main()
{

//Leer configuración . . . .

//Conexion con base de datos . . . .

for ( ; ; )
{

//Consulta a la base de datos si hay nueva orden para procesar

//Si no hay nueva orden GOTO FIN;

//Si hay nueva orden, la procesa

//Procesa nueva orden . . . .
// . . . y borra/inicializa variables globales

FIN:
}

}

Muchas Gracias por Todo y Saludos Cordiales !!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda con for( ; ; )

Publicado por ISAIAS DUQUE GOMEZ (46 intervenciones) el 03/03/2009 21:56:50
una pregunta mi estimado, ¿el ciclo for cuando lo terminas?, tu ciclo es infinito y siempre estas buscando en la BD por eso se te consumen los recursos, podrias probar con un temporizador mejor, cada N minutos buscas en la BD, creo que no hay necesidad de siempre estar buscando en la BD, bloqueas el trafico para los demas clientes.

Saludos, espero comentes como solucionaste tu problema..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con for( ; ; )

Publicado por tipitipi (15 intervenciones) el 03/03/2009 22:48:46
Hola de Nuevo !!!

Gracias por la respuesta. Me imaginaba una respuesta así, pero pensaba que había algún tipo de solución alternativa.

El problema que tiene mi aplicación es que tiene que estar leyendo constantemente de la base de datos, porque la cantidad de ordenes que llegan es bastante considerable y además legan de forma asíncrona, por lo tanto no puedo estimar un tiempo de espera entre consulta y consulta debido a que ante una llegada masiva de órdenes, el tiempo de respuesta de mi aplicación se demoraría demasiado.

Lo que se me ha ocurrido es probar con sleep(), no se si con eso le dará tiempo al sistema para liberar recursos, pero lo intentaré.

Ya se que es mucho pedir, pero si se te ocurre una solución mejor, por favor hazmelo saber.

Mi correo es: tipitipitipita@hotmail.com

Muchas gracias y Saludos !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar