IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Stopper tout les threads


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Par défaut Stopper tout les threads
    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

  2. #2
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    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.

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par OlivierDotre
    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
    Lire la doc :
    http://www.llnl.gov/computing/tutorials/pthreads/

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Sympa ce lien, bookmarké, merci
    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 !

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Par défaut
    Merci, c'est parfait ça marche :d:d

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    Citation Envoyé par Franck.H
    Sympa ce lien, bookmarké, merci
    +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 encheres

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Par défaut
    Salut c'est encore moi

    j'ai donc fait ma fonction mais une fois sur deux elle renvois un code d'erreur
    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...");
    }
    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.

    Merci

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 32
    Par défaut
    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.

    ++

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Par défaut
    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

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Par défaut
    Voila j'ai réparé ma fonction
    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...");
    }
    J'ai bien changé la manière dont s'arrête mes threads
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, PTHREAD_CANCEL_DEFERRED);
    Mais rien n'y fait, ça plante toujours là.

    Si quelqu'un pouvait m'aider ça serait super.

    Merci

    Olivier

  11. #11
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Par défaut
    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..

Discussions similaires

  1. Stopper tous les threads d'un service
    Par wmenant dans le forum Windows Communication Foundation
    Réponses: 3
    Dernier message: 12/04/2012, 23h13
  2. [XL-2003] stopper toutes les fonctions en cours
    Par zangaloni dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/06/2011, 16h35
  3. Réponses: 1
    Dernier message: 07/06/2011, 15h06
  4. Stopper toutes les methodes en cours
    Par ald2ff64 dans le forum C#
    Réponses: 1
    Dernier message: 26/11/2010, 21h20
  5. [D5] Handle de DLL identique pour tout les threads
    Par yves_fuji dans le forum Delphi
    Réponses: 6
    Dernier message: 09/08/2006, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo