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