pthread_kill

Bonjour tout le monde, j’écris ce message car je rencontre un petit problème avec la fonction pthread_kill pour tuer des tâches que j’ai créé.

Voici comment je l’utilise :

“device[probe-1]” est un élément du tableau de structure device, “synchro” est le pthread_t de la tâche que je veux tuer. Petit problème, quand je fais ceci il termine bien la tâche, mais apparament il termine aussi mon petit programme puisque je vois un “Killed” et le retour au prompt de l’invite de commande.

Comment tuer juste la tâche désignée ?

j’ai jamais implémenté ça, mais en cherchant un ‘man pthread_kill’ (je n’ai pas la page sur ma machine), je suis tombé dans linux-kheops.com/doc/man/man … 3.txt.html sur[quote]BOGUES
La gestion des signaux dans LinuxThreads ne respecte pas
celle définie par le standard POSIX. Selon le standard, un
signal “asynchrone” (externe) doit être dérouté vers le
processus tout entier (c’est à dire vers tous les threads
le composant) mais seul l’un deux doit le gérer. Celui-ci
peut être n’importe lequel des threads ne bloquant pas le
signal.[/quote]
Alors je ne sais pas précisément ce que ça veut dire, mais ça se traduit peut être chez toi par l’envoi du signal à toutes les threads du processus qui ne masquent pas le signal, au lieu de ne l’envoyer qu’a une seule…
non ?

Je pense que tu as raison, Linux n’arrive pas à gérer le “kill” des threads par un autres thread, en tout cas la fonction pthread_kill ne marche pas comme elle devrait selon les tests que j’ai fait dessus, corrigez moi si vous trouvez comment faire.

Finalement j’ai cherché d’autres solution et j’ai trouvé une alternative intéressante avec la fonction pthread_cancel qui permet de tuer la tâche dont on passe le descripteur en paramètre, elle est très simple et se révèle efficace :wink: