![]() |
Obtener el estado de un thread
Buenas amigos, tengo una duda:
Con SuspendThread suspendo un hilo, con ResumeThread lo revivo pero ¿pero cómo puedo saber si el hilo ya está suspendido? ¿y qué consecuencias tiene intentar suspender un hilo que ya podría estarlo? Lo ideal sería obtener su estado ya que para enviar el context a un hilo hay que suspenderlo o eso entendí en la msdn sobre SethreadContext. |
Imagino que te estas refiriendo al manejo de Thread con la API. En este caso, he de comentarte que el SO tiene un contador que se incrementa cuando se suspende un Thread con SuspendThread y se decrementa con ResumeThread. Ambas APIs devuelven el estado previo del contador con lo que ya conoces es estado actual. Un Thread no está activo si el contador es mayor que 1. Puedes ejecutar tantas veces como quieras a SuspendThrea, el Thread no se suspenderá más de lo que esté, pero para activarlo tienes que ejecutar las mismas veces ResumeThread para poner el contador a cero.
El S.O. guarda celosamente el estado del thread y en general no se requiere ahondar más para conocer el estado de un Thread. Si quieres profundizar en este tema puedes leer esto: How to get thread state Saludos. |
Vales gracias, pues eso ya lo estuve mirando y en mi caso devuelve 0 y después llamo a resumethread por lo que doy por echo que el hilo no está suspendido pero después de hacer eso pierdo el control del proceso depurado y no responde. Si lo hago sin llamar a SuspendThread y a resumethread no falla.
|
Cita:
Saludos. |
Es el hilo sobre el que se le pone los hardware breakpoints.
|
| La franja horaria es GMT +2. Ahora son las 04:31:30. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi