duda de threads

Alberto Curro acurro en wanadoo.es
Mar Sep 28 14:21:18 CEST 2004


zako wrote:

>aupa,
>
>ando con una duda sobre los threads. Utilizo  un objeto Thread y sobrescribo
>el metodo run. El problema es que el metodo run se ejecuta indefinidamente
>(arranca un servidro TCP) hasta que el programa lo "mate". En la documentacion
>de Thread he visto que no hay ningun método para matar un hilo, el hilo se
>acaba cuando finaliza el metodo run (cosa que no ocurre en mi caso) o cuando
>se recibe una excepcion no manejada. 
>
>Mi duda es si existe alguna forma de matar ese hilo, por ejemplo si existe
>alguna funcion para lanzar una excepcion desde el programa al hilo para
>finalizarlo o algo similar.
>
>Sino tambien he visto como posibilidad utilizar el modulo thread en lugar de
>threading, ya que este tiene una funcion exit. Pero esto me obligaria a
>modificar bastante el código. Saludos y gracias,
>
>zako
>  
>
Una duda,

    aunque no soy un "hacker experto" en temas de red, no acabo de ver 
las ventajas del modelo que estás adoptando. Supongo que has diseñado la 
aplicación de forma que hace algo y al mismo tiempo quieres que atienda 
peticiones en TCP... no?

    Vale, pero... ¿y cómo atiendes múltiples conexiones? ¿Limitas a una 
sóla?.

    ¿No sería más sencillo adoptar el enfoque tradicional de hilo 
principal -> hilos hijo para las peticiones? Es algo parecido al uso 
tradicional de procesos padre e hijo con fork(), pero usando threads.  
De esta manera cada thread hijo atendería una petición y se finalizaría 
a si mismo, con lo cual se te simplifica (mucho) el problema. ¿no?.

    En Linux no sé, pero en Windows puedes crear objetos mutex (mismo 
concepto que colas/slots de comunicación entre procesos en UNIX/Linux, 
pero adoptado a la "filosofía" microsoft), y así tienes un canal de 
comunicación con el cual haces un read() y write() sobre el mutex y listo.

    Ya digo que desconozco qué tienes en mente exactamente. Pero si es 
el caso "típico" entonces este formato a mí me parece más sencillo y 
manejable.

    Salu2




Más información sobre la lista de distribución Python-es