• Domingo 15 de Diciembre de 2024, 19:41

Autor Tema:  Comprobar si un hilo esta aun vivo  (Leído 851 veces)

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Comprobar si un hilo esta aun vivo
« en: Viernes 5 de Diciembre de 2008, 19:04 »
0
Buenas:

tengo un hilo que parece ser qeu da algun problema y "desaparece".

Con desaparecer me refiero a que no produce ninguna excepción, no pasa por _endthread ni hace nada raro, sin embargo, el hilo deja de funcionar y ademas desaparece de la lista de threads del spy++.

Alguien sabe que puede provocar algo asi?

De mientras averiguo la razón, estoy intentando descubrir cuando desaparece para relanzarlo. Para ello, en msdn dicen de usar WaitForSingleObject, sin embargo, cuando se produce esta "desaparición" waitforsingleobject no retorna. He probado tambien con _cwait y pasa lo mismo.

Alguien sabe como puedo "vigilar" la permanencia de un  hilo?.

Gracias.

Código: Text
  1.  
  2.  
  3. //este es hilo de vigilancia del otro hilo
  4. unsigned int __stdcall Watcher(void *)
  5. {
  6.         _cwait(NULL,(intptr_t)app->GetCom()->ReadThread,0);              //no detecta la finalización
  7.            //WaitForSingleObject(app->GetCom()->ReadThread,INFINITE);  //no detecta la finalización
  8.  
  9.     if (app->IsFinished()==false)
  10.     MessageBox(0,"HILO DE LECTURA ROTO SIN SOLICITUD",0,0);
  11.     return 0;
  12. }
  13.  
  14.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Comprobar si un hilo esta aun vivo
« Respuesta #1 en: Viernes 5 de Diciembre de 2008, 19:15 »
0
WaitForSingleObject tiene que retornar al finalizar el hilo ... tal vez no termina en realidad y falla ese programa (Spy++), proba usando el Process Explorer a ver si tambien desaparece. Depura el hilo completo o pone un breakpoint en la instruccion ret (assembly) del mismo para ver en que condiciones termina, con el WinDbg podes habilitar el evento "Exit thread".

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.