Los threads no siempre me terminan
Publicado por SONIA23 (3 intervenciones) el 06/10/2004 15:02:57
Hola,
tengo una aplicacion multithread en delphi 7. Funciona bien, pero cuando la sobrecargo de trabajo (le mando muchas peticiones a traves de sockets, y cada una de esas peticiones abre un thread), despues de un rato se dispara no solo la memoria utilizada sino que ocupa el 99% de la CPU con lo que en el administrador de tareas de windows se dispara el uso de CPU. ¿Que pasa? Estoy finalizando mal los threads??
Porque despues de esto ya ni es capaz de recibir peticiones a traves de los sockets (es como si se quedara pillao por completo)
Muchas gracias y perdonar el rollo, pero es importante
CODIGO:
segundoProceso := TMyThread.Create(True);
segundoProceso.IniciaThread(cliente,ClientSocket,ARuta,estaTrabajando); //inicializo el thread
segundoProceso.Resume; //lo lanzo
** Aqui se ejecuta el codigo del thread en otra clase***
segundoProceso.WaitFor; ///espero por el.Sino pongo esto, casca
segundoProceso.Free; //libero el thread
El caso es que a veces se queda pillao y creo que el thread nunca termina, con lo que el uso de CPU se pone al 99% !!!
tengo una aplicacion multithread en delphi 7. Funciona bien, pero cuando la sobrecargo de trabajo (le mando muchas peticiones a traves de sockets, y cada una de esas peticiones abre un thread), despues de un rato se dispara no solo la memoria utilizada sino que ocupa el 99% de la CPU con lo que en el administrador de tareas de windows se dispara el uso de CPU. ¿Que pasa? Estoy finalizando mal los threads??
Porque despues de esto ya ni es capaz de recibir peticiones a traves de los sockets (es como si se quedara pillao por completo)
Muchas gracias y perdonar el rollo, pero es importante
CODIGO:
segundoProceso := TMyThread.Create(True);
segundoProceso.IniciaThread(cliente,ClientSocket,ARuta,estaTrabajando); //inicializo el thread
segundoProceso.Resume; //lo lanzo
** Aqui se ejecuta el codigo del thread en otra clase***
segundoProceso.WaitFor; ///espero por el.Sino pongo esto, casca
segundoProceso.Free; //libero el thread
El caso es que a veces se queda pillao y creo que el thread nunca termina, con lo que el uso de CPU se pone al 99% !!!
Valora esta pregunta


0