[Kde-devel-es] Matar hilos (QThread) pasado un tiempo sin hacer sleep

Laura Santiago de la Cal lalii24 at hotmail.com
Wed Aug 19 17:17:13 CEST 2009


Uy, lo siento, he copiado un ejemplo erroneo (he hecho ya tantas pruebas..) sería:
QTimer *timer = new QTimer(this);connect( timer, SIGNAL(timeout()), this, SLOT(quit()));timer->start(200); //2000=2segundos
Y más adelante:public slots:
void quit()
{printf("FUNCIONA\n");a->terminate();}
Y en a tengo un:while (1){printf("hola\n");}
Y nada, Funciona nunca se muestra..
Date: Wed, 19 Aug 2009 17:07:27 +0200
From: aleixpol at kde.org
To: kde-devel-es at kde.org
Subject: Re: [Kde-devel-es] Matar hilos (QThread) pasado un tiempo sin hacer	sleep

Estás pasando 'a' como padre del QTimer. El padre destruye (delete) todos los hijos cuando se detruye.

2009/8/19 Laura Santiago de la Cal <lalii24 at hotmail.com>






no entiendo la pregunta

Date: Wed, 19 Aug 2009 16:46:02 +0200
From: aleixpol at kde.org
To: kde-devel-es at kde.org

Subject: Re: [Kde-devel-es] Matar hilos (QThread) pasado un tiempo sin hacer	sleep

No se estará destruyendo 'a'? si es el padre lo destruirá.

2009/8/19 Laura Santiago de la Cal <lalii24 at hotmail.com>







Un Qtimer junto es lo que estoy intentando usar, pero no sé si es que no lo entiendo o leo mal la documentación, pero he intentado usarlo de mil formas diferentes y no me funciona.
De la forma siguiente consigo que ejecute y tal, pero no me hace nada. (Yo creo que debería imprimirme Funciona despues de 2 segundos)


En un sitio tengo:

QTimer *timer = new QTimer(a);
connect( timer, SIGNAL(timeout()), this, SLOT(quit()));
timer->start(200); //2000=2segundos
Y más adelante:public slots:
void quit()

{
    printf("FUNCIONA\n");
    a->terminate();
}
Date: Wed, 19 Aug 2009 16:30:07 +0200
From: aleixpol at kde.org
To: kde-devel-es at kde.org


Subject: Re: [Kde-devel-es] Matar hilos (QThread) pasado un tiempo sin hacer	sleep

2009/8/19 Laura Santiago de la Cal <lalii24 at hotmail.com>








Estos hilos se ejecutan en un entorno controlado, por tanto no pueden hacer nada fuera del sistema, estos hilos lo único que pueden hacer es modificar las variables del programa en el que se están ejecutando.Además yo lo que digo no es que vaya a dejarlo en el estado anterior sino en el estado que yo deseo...


Voy a explicar mi caso con más detenimiento a ver si así me explico mejorEstoy creando un programa que se encargará de enfrentar a otros dos programas escritos por usuarios que no conozco, en este caso concreto cada usuario escribe un jugador de tennis y tiene que intentar ganar el partido, para moverse, golpear y tal les facilito una librería de funciones.


El programa que yo controlo va cediendo el turno a cada uno de los otros 2 programas por turnos (estos se ejecutan en forma de hilo) y lo único que busco es que si uno de los 2 usuarios sin querer (o adrede) se mete en un bucle infinito desalojar ese hilo de la cpu y darlo como si no hubiera hecho nada (no quiere avanzar ni golpear ni nada) y preguntarle al otro que quiere hacer...


No sé si me he explicado, espero que sí... a ver si alguien me puede ayudar a eso, a desalojar un hilo de la cpu si ha excedido un tiempo (sé que puedo poner wait(x) y luego matarlo, pero no quiero bloquear la cpu)


A ver si hay suerte y alguien me puede ayudar...
Puedes usar QTimer::singleShot().
El tema es que si matas un thread puedes dejar el programa entero en un estado descontrolado.




Saludos,
Aleix
 
> Date: Wed, 19 Aug 2009 13:20:31 +0200

> From: ereslibre at kde.org
> To: kde-devel-es at kde.org
> Subject: Re: [Kde-devel-es] Matar hilos (QThread) pasado un tiempo sin hacer	sleep



> 
> 2009/8/19 Laura Santiago de la Cal <lalii24 at hotmail.com>:
> > 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
> > 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.
> 
> Creo que esto último es imposible. Si no sabes qué código ejecuta el
> jugador (según lo que has dicho en otro mensaje) es sencillamente



> imposible que dejes el sistema en el mismo estado en el que se
> encontraba, básicamente porque no sabes qué hizo el código del
> jugador.
> 
> Imagínate que por alguna razón desconocida, ha abierto un fichero y



> está escribiendo sobre él en el momento en el que matas el hilo. Es
> imposible que puedas dejar el sistema en el mismo estado en el que se
> encontraba.
> 
> 
> Un saludo,
> Rafael Fernández López.



> _______________________________________________
> Kde-devel-es mailing list
> Kde-devel-es at kde.org
> https://mail.kde.org/mailman/listinfo/kde-devel-es




¿Quieres los nuevos emoticonos en 3D?  ¡Descárgatelos gratis! 

_______________________________________________

Kde-devel-es mailing list

Kde-devel-es at kde.org

https://mail.kde.org/mailman/listinfo/kde-devel-es




¿Quieres los nuevos emoticonos en 3D?  ¡Descárgatelos gratis! 



_______________________________________________

Kde-devel-es mailing list

Kde-devel-es at kde.org

https://mail.kde.org/mailman/listinfo/kde-devel-es




Hotmail en tu móvil allá donde vayas  ¡Descúbrelo!

_______________________________________________

Kde-devel-es mailing list

Kde-devel-es at kde.org

https://mail.kde.org/mailman/listinfo/kde-devel-es




_________________________________________________________________
Internet Explorer 8 más sencillo y seguro ¡Descárgatelo gratis!
http://events.es.msn.com/noticias/internet-explorer-8/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/kde-devel-es/attachments/20090819/57e42188/attachment.htm 


More information about the Kde-devel-es mailing list