[Kde-devel-es] Matar hilos (QThread) con el tiempo
Laura Santiago de la Cal
lalii24 at hotmail.com
Mon May 18 09:16:24 CEST 2009
Hola, tambien había probado anteriormente con terminate() (se me olvidó ponerlo) y tampoco me termina la ejecución del hilo...
Y efectivamente no tengo un bucle de eventos en mi hilo, explico un poco porque quiero acabar con un hilo pasado X segundos.
Resulta que estoy haciendo un "motor" que manejará hilos escritos por usuarios desconocidos para mi sistema, y lo que pretendo es que si este usuario quiere ejecutar su hio durante más tiempo que el que le otorgo no pueda y ese hilo sea desalojado...
¿Alguna otra idea? (Gracias Albert por contestar tan rápido)
> From: aacid at kde.org
> To: kde-devel-es at kde.org
> Date: Sat, 16 May 2009 18:34:17 +0200
> Subject: Re: [Kde-devel-es] Matar hilos (QThread) con el tiempo
>
> A Divendres, 15 de maig de 2009, Laura Santiago de la Cal va escriure:
> > Hola, soy nueva en esta listasde distribución (me la recomendaron desde
> > otra) y tengo un problema que he mirado por todas partes y no le encuentro
> > solución, espero que alguno de ustedes me pueda orientar. Resulta que tengo
> > un proceso que quiero que "guie" 2 hilos (QThread), para ello lo que quiero
> > es que llame al primero e independientemente de porque parte de la
> > ejecución se encuentre este hilo a los 5 segundos mate a este hilo y llame
> > al segundo.
>
> No, no quieres hacer eso, matar un thread independientemente de la parte en la
> que se encuentre es una MUY MALA práctica de programación.
>
> > ¿Alguien sabe como hacerlo? Lo que yo he intentado es lo
> > siguiente, pero no funciona:
> >
> > //Los 2 procesos que compiten
> > a = new clase() ; //clase herda de QThread
> > b = new clase() ;
> >
> > //Controlamos los hilos hasta que hay un ganador
> > while(get_win()==-1)
> > {
> >
> > QTimer::singleShot(6, a, SLOT(quit()));
> > QTimer::singleShot(6, b, SLOT(quit()));
> > a->start();
> > b->start();
> > update();
> > }
>
> No funciona porque
>
> void QThread::quit()
> Tells the thread's event loop to exit with return code 0 (success). Equivalent
> to calling QThread::exit(0).
> This function does nothing if the thread does not have an event loop.
>
> Y más que probablemente tu thread no tenga un event loop.
>
> Si lo que quieres es matar el thread (ya te he dicho que no deberias hacerlo)
> tienes
>
> void QThread::terminate()
> Terminates the execution of the thread.
> When the thread is terminated, all threads waiting for the thread to finish
> will be woken up.
> Warning: This function is dangerous and its use is discouraged. The thread can
> be terminate at any point in its code path. Threads can be terminated while
> modifying data. There is no chance for the thread to cleanup after itself,
> unlock any held mutexes, etc. In short, use this function only if absolutely
> necessary.
>
> Pues eso, que para 3 slots que tiene QThread no habias leido la documentación
> con suficientes ganas.
>
> Albert
>
> >
> > Muchas gracias por su tiempo
> >
> >
> > _________________________________________________________________
> > Comparte, crea, disfruta… Descubre todo, en estos vídeos
> > http://www.windowslive.es
>
>
> _______________________________________________
> Kde-devel-es mailing list
> Kde-devel-es at kde.org
> https://mail.kde.org/mailman/listinfo/kde-devel-es
_________________________________________________________________
Descárgate ahora el nuevo Internet Explorer 8 y ten a tu alcance todos los servicios de Windows Live ¡Gratis!
http://ie8.msn.com/microsoft/internet-explorer-8/es-es/ie8.aspx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/kde-devel-es/attachments/20090518/0ff8f492/attachment.htm
More information about the Kde-devel-es
mailing list