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

Aleix Pol aleixpol at kde.org
Wed Aug 19 21:52:00 CEST 2009


Quizá deberías poner el código completo...
QThread funciona, QTimer también y qDebug también... algo estarás haciendo
mal.

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

>  sí, he probado a poner this en vez de a y nada
>
> ------------------------------
> Date: Wed, 19 Aug 2009 18:08:31 +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
>
> Has probado con cambiar el padre de QTimer como te he dicho?
>
> 2009/8/19 Laura Santiago de la Cal <lalii24 at hotmail.com>
>
>  sucede exactamente lo mismo (tambien he puesto qDebug ("funciona") y nada,
> nunca llega a mostrarme funciona...
>
> ------------------------------
> Date: Wed, 19 Aug 2009 17:27:15 +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
>
> usa qDebug("hola");
>
>
> 2009/8/19 Laura Santiago de la Cal <lalii24 at hotmail.com>
>
>  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 mejor
> Estoy 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!
> <http://www.vivelive.com/emoticonos3d/index2.html>
>
> _______________________________________________
> 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!
> <http://www.vivelive.com/emoticonos3d/index2.html>
>
> _______________________________________________
> 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!<http://serviciosmoviles.es.msn.com/hotmail/hotmail.aspx>
>
> _______________________________________________
> Kde-devel-es mailing list
> Kde-devel-es at kde.org
> https://mail.kde.org/mailman/listinfo/kde-devel-es
>
>
>
> ------------------------------
> Messenger cumple 10 años ¡Conéctate y celébralo con toda la comunidad!<http://www.vivelive.com/aniversariomessenger>
>
> _______________________________________________
> Kde-devel-es mailing list
> Kde-devel-es at kde.org
> https://mail.kde.org/mailman/listinfo/kde-devel-es
>
>
>
> ------------------------------
> ¡Que no te pillen atascos ni radares! En MSN te damos toda la información
> sobre el estado de las carretas y te mostramos dónde se encuentran los
> radares de tráfico. <http://motor.es.msn.com/servicios/>
>
> _______________________________________________
> 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!
> <http://www.vivelive.com/emoticonos3d/index2.html>
>
> _______________________________________________
> Kde-devel-es mailing list
> Kde-devel-es at kde.org
> https://mail.kde.org/mailman/listinfo/kde-devel-es
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/kde-devel-es/attachments/20090819/458f8c0e/attachment-0001.htm 


More information about the Kde-devel-es mailing list