Bonjours, je dois faire une recherche grâce à des threads. mais je voudrais savoir comment arrêter tout les threads quand j'ai la réponse.
Mes threads sont stoqués dans un tableau (pthread_t *mythread
Merci d'avance
Olivier
Bonjours, je dois faire une recherche grâce à des threads. mais je voudrais savoir comment arrêter tout les threads quand j'ai la réponse.
Mes threads sont stoqués dans un tableau (pthread_t *mythread
Merci d'avance
Olivier
Il n'y a pas une fonction pthread cancel ? Sinon, pour avoir une vue de l'ensemble des fonctions disponibles dans la librairie pthread, tu dois pouvoir faire un man pthread.h, peut être que tu y trouveras de l'inspiration.
Lire la doc :Envoyé par OlivierDotre
http://www.llnl.gov/computing/tutorials/pthreads/
Sympa ce lien, bookmarké, merciEnvoyé par Emmanuel Delahaye
![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Merci, c'est parfait ça marche :d:d
+1 en plus c'est pas la premiere fois que je vois des liens sympatoches d'Emmanuel. Faudrait un jour qu'il organise une vente aux encheresEnvoyé par Franck.H
![]()
Salut c'est encore moi
j'ai donc fait ma fonction mais une fois sur deux elle renvois un code d'erreur
Donc je ne sais pas comment faire, mais j'ai l'impression que ma méthode à certaine lacune car des threads ne s'arretent aps de suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void kill_threads(int n){ int i; print_terminal("Main","Killing the threads..."); for(i=1;i<MAX_THREADS+1;i++) { //pthread_cancel(mythread[i]); if(i!=n){ if(pthread_cancel(mythread[i])) error_exit("error while killing thread."); } } print_terminal("Main","Threads killed..."); }
Merci
slt,
lorsque tu travaille avec des tableaux ou des pointeurs sur un ensemble de donnée, n'oublie pas que le premier élément se trouve à l'indice 0 et non à 1.
tu dois donc initialiser ta variable i à 0 et tourner jusqu'à MAX_THREAD.
Si tes threads ne s'arrêtent pas tt de suite, c'est parce que tu n'as pas utilisé les bonnes options. Il faut que tu indiques dans chacun de tes threads que tu acceptes de te faire tuer, tu dois également indiquer de quelle façon (directement ou de façon diffèrée).
va voir les pages de manuel de pthread_cancel pour plus de détails.
voila j'espère que cela te donne déjà quelques pistes.
++
Ok, j'avais oublier pour les tableaux... La bête erreur :-d
Je vais de suite aller relire les man page, je savais pas qu'il fallait leurs dire ça.
merci
Voila j'ai réparé ma fonction
J'ai bien changé la manière dont s'arrête mes threads
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void kill_threads(int n){ int i; print_terminal("Main","Killing the threads..."); for(i=0;i<MAX_THREADS;i++) { if(i!=n){ if(pthread_cancel(mythread[i])) error_exit("error while killing thread."); } } print_terminal("Main","Threads killed..."); }
Mais rien n'y fait, ça plante toujours là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, PTHREAD_CANCEL_DEFERRED);
Si quelqu'un pouvait m'aider ça serait super.
Merci
Olivier
Je trouve rien comme info là dessus mais ça ne peut pas poser un problème si jamais le thread est déjà fini si je fais un cancel..
Partager