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