Vi, mais ça bloque la thread en cours. En gros, si je fais du gtk, je cherche à attendre ma thread (qui est une boucle infinie, c’est le but) hé bien je suis bloqué :o
Je ne vois pas pkoi ca bloquerais en gtk, j’ai déja utilisé les threads sans soucis.
D’ailleur je ne vois pas ce que tu cherches à faire : si dans la thread, une erreur de listen/read arrive, tu peux modifier une variable global (oublie pas les mutex lock/unlock) qui vaudra 1 ou 0.
Tu peux voire aussi, sans variable globale, avec pthread_self, si ca te renvoye 0, c’est que tu n’as plus de thread actif.
Si tu veux, c’est mon serveur : y a un thread qui attend les connexions et prépare les clients , et l’autre qui envoie des données
Si le thread qui accept() quitte, ben je veux justement que ça fasse planter.
Et là, mes variables globales sont justement non protégées : je les définis d’abord à TRUE avant d’appeler la thread, et si la thread modifie la valeur je quitte la thread courrante.
[edit] ce que j’aimerai bien c’est l’équivalent d’un signal : je demande à être averti si la thread n’existe plus, pour justement effacer mes données (avec mutex), et quitter la thread parente.
Je veux justement éviter de les protéger l’idée c’est de regarder si la thread a modifié la variable d’erreur. Si je pose un verrou dessus, vais me farcir un joli interblocage
Voila ce que j’ai compris : tu as un serveur avec une thread qui fait les accept des client et une autre thread qui s’occupe d’écrire sur la socket, ce qui donnerais en pseudo code :
debut write_socket
write(socket, data)
fin write_socket
debut accept_function
debut boucle infini
accept(socket, client)
prepare(client)
fin boucle infi
// thread fini ici
thread_init = FALSE
fin accept_function
debut creation_gui()
si thread_init == FALSE
messagebox("le thread est fini")
fin si
fin creation_gui()
j ai pas suivi toute l’histoire, mais pourquoi tu n’utilise pas les signaux justement, tu envoie un signal au process que tu veux, juste avant de faire un exit
Je pense qu’il y a moyen de faire quelque chose avec ca :
"pthread_kill send signal number signo to the thread thread. Pthreads-w32 only supports signal number 0, which does not send any signal but causes pthread_kill to return an error if thread is not valid."