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

Windows Discussion :

Bien sortir d'un thread.


Sujet :

Windows

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut Bien sortir d'un thread.
    J'aimerai avoir votre avis la dessus :

    Je viens de demander à un tread de sortir. Il est cencé l'avoir fait.
    Voici ce que je code pour m'en assurer, est ce propre et comme il faut ou pas?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    void Terminer le thread()
    {
    
    	DWORD CloseResult;
    	//Instruction qui dit au thread de sortir
    	[...]
    	//Voila là il est cencé s'etre terminé proprement
    	CloseResult= WaitForSingleObject(hMonThread,TIMEOUT_SORTIE_THREAD); //TIMEOUT_SORTIE_THREAD etant une constante que j'ai défini et qui est cencée laisser amplement le temps au thread de sortir
    	//Si le thread n'a pas reussi à sortir bien sagement
    	if(CloseResult==WAIT_TIMEOUT)
    	{
    		//On force sa fin (ce qui est bien domage)
    		TerminateThread(s_htTrigPIVgrab,0);
    		//On ferme son handle
    		CloseHandle(s_htTrigPIVgrab);
    		//On reset le handle
    		s_htTrigPIVgrab=NULL
    	}
    }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Ben, à partir du moment où on a un TerminateThread(), c'est sale, mais puisqu'on ne l'emploie qu'en dernier recours... disons que c'est aussi propre qu'on peut l'être.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    ok, et le closehandle n'est pas de trop dans mon cas?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    ben là, c'est possible qu'il soit de trop en effet: On peut toujours vouloir s'en servir ensuite pour obtenir des informations... (GetThreadTimes(), GetExitCodeThread(), etc.)

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Bonjour,

    Il me semble qu'en fermant le dernier handle d'un objet ( dans ce cas un thread ) , ca supprime l'objet.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Oui (sauf pour un thread en cours, bien entendu: Il n'est supprimé que lorsqu'il est terminé ET que tous ses handles sont fermés).

    Et lorsqu'un processus se termine, tous les handles qu'il possédait sont fermés, encore qu'il doit y avoir des fonctions de débogage pour détecter les leaks de handles...

Discussions similaires

  1. Vérifier que les Threads se ferment bien
    Par oc_alex86 dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 13/05/2007, 20h46
  2. Bien implémeter les threads
    Par kerinel dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 28/02/2007, 10h08
  3. [Thread]Savoir si un thread s'est bien terminé.
    Par thibaut dans le forum Général Java
    Réponses: 16
    Dernier message: 27/09/2006, 17h30
  4. [THREAD][DAEMON]Pas bien compris....
    Par XristofGreek dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 24/09/2004, 13h28
  5. [Threads] Sortir d'une fonction bloquante
    Par guejo dans le forum MFC
    Réponses: 19
    Dernier message: 17/08/2004, 14h12

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