[Kde-devel-es] Matar hilos (QThread) pasado un tiempo sin hacer sleep
José Luis
jsanchez at todounix.homeip.net
Wed Aug 19 11:04:48 CEST 2009
Laura Santiago de la Cal wrote:
> La función terminate la tengo habilitada ya que si la pongo fuera del
> slot me termina el hilo perfectamente, asi que ese no puede ser el
> problema
¿Llamas a QThread::exec() desde run()?
> Respecto a que matar hilos así derepente es mala práctica normalmente
> ya lo sé, pero en este caso es lo que deseo hacer ya que una vez que
> yo los mate me preocuparé de dejar el sistema en el estado que yo
> deseo, asi que por eso no hay problema.
> El problema es ¿cómo le mato si en un tiempo determinado no ha
> terminado sin bloquear la cpu con un wait()?
Una manera podría ser guardar en una tabla el TID y la hora
proporcionada por gettimeofday del momento en que creaste el thread.
Periódicamente (¿con un thread tuyo creado ex-profeso para ello?)
compruebas si han transcurrido más de N segundos (o ms o lo que quieras)
y si se ha pasado lo matas. El problema de ese método es que solo tiene
en cuenta el tiempo transcurrido real y no el que el thread ha usado de
CPU (mira getitimer si tienes dudas)
Si usas Linux otro método sería usar la información que hay acerca del
thread en /proc. Ahora mismo no tengo un Linux a mano, pero seguro que
la información que necesitas está ahí.
More information about the Kde-devel-es
mailing list