<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
Hola, tambien había probado anteriormente con terminate() (se me olvidó ponerlo) y tampoco me termina la ejecución del hilo...<br>Y efectivamente no tengo un bucle de eventos en mi hilo, explico un poco porque quiero acabar con un hilo pasado X segundos.<br>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...<br><br>¿Alguna otra idea? (Gracias Albert por contestar tan rápido)<br><br>> From: aacid@kde.org<br>> To: kde-devel-es@kde.org<br>> Date: Sat, 16 May 2009 18:34:17 +0200<br>> Subject: Re: [Kde-devel-es] Matar hilos (QThread) con el tiempo<br>> <br>> A Divendres, 15 de maig de 2009, Laura Santiago de la Cal va escriure:<br>> > Hola, soy nueva en esta listasde distribución (me la recomendaron desde<br>> > otra) y tengo un problema que he mirado por todas partes y no le encuentro<br>> > solución, espero que alguno de ustedes me pueda orientar. Resulta que tengo<br>> > un proceso que quiero que "guie" 2 hilos (QThread), para ello lo que quiero<br>> > es que llame al primero e independientemente de porque parte de la<br>> > ejecución se encuentre este hilo a los 5 segundos mate a este hilo y llame<br>> > al segundo. <br>> <br>> No, no quieres hacer eso, matar un thread independientemente de la parte en la <br>> que se encuentre es una MUY MALA práctica de programación.<br>> <br>> > ¿Alguien sabe como hacerlo? Lo que yo he intentado es lo<br>> > siguiente, pero no funciona:<br>> ><br>> > //Los 2 procesos que compiten<br>> > a = new clase() ; //clase herda de QThread<br>> > b = new clase() ;<br>> ><br>> > //Controlamos los hilos hasta que hay un ganador<br>> > while(get_win()==-1)<br>> > {<br>> ><br>> > QTimer::singleShot(6, a, SLOT(quit()));<br>> > QTimer::singleShot(6, b, SLOT(quit()));<br>> > a->start();<br>> > b->start();<br>> > update();<br>> > }<br>> <br>> No funciona porque <br>> <br>> void QThread::quit()<br>> Tells the thread's event loop to exit with return code 0 (success). Equivalent <br>> to calling QThread::exit(0).<br>> This function does nothing if the thread does not have an event loop.<br>> <br>> Y más que probablemente tu thread no tenga un event loop.<br>> <br>> Si lo que quieres es matar el thread (ya te he dicho que no deberias hacerlo) <br>> tienes <br>> <br>> void QThread::terminate()<br>> Terminates the execution of the thread. <br>> When the thread is terminated, all threads waiting for the thread to finish <br>> will be woken up.<br>> Warning: This function is dangerous and its use is discouraged. The thread can <br>> be terminate at any point in its code path. Threads can be terminated while <br>> modifying data. There is no chance for the thread to cleanup after itself, <br>> unlock any held mutexes, etc. In short, use this function only if absolutely <br>> necessary.<br>> <br>> Pues eso, que para 3 slots que tiene QThread no habias leido la documentación <br>> con suficientes ganas.<br>> <br>> Albert<br>> <br>> ><br>> > Muchas gracias por su tiempo<br>> ><br>> ><br>> > _________________________________________________________________<br>> > Comparte, crea, disfruta… Descubre todo, en estos vídeos<br>> > http://www.windowslive.es<br>> <br>> <br>> _______________________________________________<br>> Kde-devel-es mailing list<br>> Kde-devel-es@kde.org<br>> https://mail.kde.org/mailman/listinfo/kde-devel-es<br><br /><hr />Ahora, GRATIS Hotmail en tu móvil <a href='http://serviciosmoviles.es.msn.com/hotmail.aspx' target='_new'>¡Descúbrelo aquí!</a></body>
</html>