begin process at 2012 05 28 22:21:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Connaitre l'état d'un thread pour quitter l'appli


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Connaitre l'état d'un thread pour quitter l'appli

vendredi 29 juillet 2005 à 15:12:29 | Connaitre l'état d'un thread pour quitter l'appli

themaste

Salut a tous!
Voila, j'ai un programme dans lekel j'ai lancé plusieurs thread, dont un principal (du point de vue fonctionnalité).
Qd ce dernier s'arrete, les autres doivent s'arreter.
Mon souci, c'est que je n'arrive pas a trouver comment savoir s'il s'est arreter ou pas


AfxBeginThread(MyThreadProc1, l_poElement1);
AfxBeginThread(MyThreadProc2, l_poElement2);
while(1)
{
Sleep(100);
}

Comment je peux donc sortir de mon while, au moment ou le premier thread est terminé ??

J'ai essayer GetExitCodeThread, mais je n'ai pas reussi a le faire marcher comme il faut apriori.

Merci pour votre aide.

vendredi 29 juillet 2005 à 15:30:17 | Re : Connaitre l'état d'un thread pour quitter l'appli

BruNews

Administrateur CodeS-SourceS
Une boucle sans fin est la pire des solutions, à enlever.
Utiliser WaitForSingleObject ou WaitForMultipleObjects selon le cas.

ciao...
BruNews, MVP VC++
vendredi 29 juillet 2005 à 15:53:09 | Re : Connaitre l'état d'un thread pour quitter l'appli

vecchio56

Administrateur CodeS-SourceS
Ou bien tout simplement une variable booléenne globale, qui reste a mon avis une meilleure solution pour des cas simples.
vendredi 29 juillet 2005 à 15:56:10 | Re : Connaitre l'état d'un thread pour quitter l'appli

themaste

Vous auriez un exemple concret a me donner? Par exemple, comment je peux utiliser le WaitForSingleObject ?
Oui si je passe par une variable globale, c que je garde mon while?

vendredi 29 juillet 2005 à 15:58:28 | Re : Connaitre l'état d'un thread pour quitter l'appli

vecchio56

Administrateur CodeS-SourceS
Dans les deux cas on garde un while
vendredi 29 juillet 2005 à 16:08:42 | Re : Connaitre l'état d'un thread pour quitter l'appli

themaste

Par rapport a ce que j'ai marqué, vous tu pourrais me modifier le code comme il faut? Car franchement, je vois pas. Je pense que le WaitForSingleObject  serait bien, mais je vois pas comment l'utiliser.....
vendredi 29 juillet 2005 à 16:12:52 | Re : Connaitre l'état d'un thread pour quitter l'appli

BIG_BOSS_001

Salut,

Pour utiliser WaitForSingleObject tu peux faire ceci :

Tu dois mettre en premier paramètre le handle de ton thread et en second le temps d'attente.
Par exemple :
DWORD hThreadStatus; // Qui va savoir si ton thread est toujours actif
hThreadStatus =  WaitForSingleObject(hMon_HANDLE, 100);
if (hThreadStatus == WAIT_TIMEOUT)
{
      // Le Thread na pas fini son travail.
}

Voilà

BIG_BOSS
vendredi 29 juillet 2005 à 16:13:18 | Re : Connaitre l'état d'un thread pour quitter l'appli

BruNews

Administrateur CodeS-SourceS
vecchio > pas de while sur attente de fin de thread, justement ce qui est à enlever.

sans MFC:
hthrd = CreateThread(...);
WaitForSingleObject (hthrd, INFINITE);
le reste sera exécuté quand hthrd sera fini.

ciao...
BruNews, MVP VC++
vendredi 29 juillet 2005 à 16:36:34 | Re : Connaitre l'état d'un thread pour quitter l'appli

vecchio56

Administrateur CodeS-SourceS
Oui, j'avais en tête une utilisation non bloquante, mais la c'est vrai que WaitForSingleObject est la meilleure solution, toutes mes excuses
vendredi 29 juillet 2005 à 16:51:48 | Re : Connaitre l'état d'un thread pour quitter l'appli

BIG_BOSS_001

[Citation de BruNews]
hthrd = CreateThread(...);
WaitForSingleObject (hthrd, INFINITE);
le reste sera exécuté quand hthrd sera fini.

[/Citation de BruNews]

BruNews tu pourrai m'expliquer stp comment on fait pour exécuté le code sous la ligne WaitForSingleObject avec pour segond paramètre INFINITE si par exemple le Thread est bloqué sur quelques choses ? (c'est peut-être bête comme question mais je débute en WIN32)

BIG_BOSS

1 2

Cette discussion est classée dans : appli, connaitre, thread, état, quitter


Répondre à ce message

Sujets en rapport avec ce message

synchronisation multithread [ par hak5 ] salut a tous, je developpe une appli faisant tourner 2 threads. je synchronise mes deux thread grace a une variable globale : il y a un thread qui met Thread ou timer ? [ par christophelande ] Bonjour à tous. Je suis en train de développer une appli permettant de visualiser (sous forme de jauge) l'activité CPU, la RAM utilisée, le traffic ré Thread et multiprocesseur [ par themaste ] Salut a tous!Voila, j'ai une appli multithread, avec un principal, et 3 autres dit "secondaire".Le premier est principale dans le sens ou c'est lui qu Chemin vers les repoertoires speciaux [ par otofraise ] Bonjour,Je voudrais connaitre les chemins permettant d'acceder aux repertoires speciaux comme Mes Documents et Favoris Reseau.Pour cela j'ai voulu uti Question bête :( [ par lamoueste ] voila j'arrive pas a me servir de thread.IsAlive pour savoir si mon thread est en cours d'execution :( alors je vous met la declaration de mon thread Threads + Reseau [ par Zootella ] Salut Voila j'ai fait une passerelle reseau, elle connecte les clients aux serveurs qu'ils veulent. Tout marche bien, mais le programme utilise 99% pb pour tuer un thread proprement [ par Krystall2002 ] bonjour.. suis en train de develloper une appli pour le contrôle d'un robot. dans le codage des événements d'exception. j'ai besoin lors d'une erreur Lancer 2 fois la même appli. [ par elademri ] --API WIN32--Tout est dans le titre, mon problème : créer un prog permettant de lancer la même application 2 fois, chose impossible pour l'application ERREUR Lors de l'execution d'une thread [ par Jeff_Trek ] Bonjour,J'ai un problème à l'execution d'une tache qui démarre un client Socket IP.Erreur : Unhandled exception in CrossServeur_V2.0.0.exe : 0xC000000 Appli non MFC utilisant une DLL MFC : comment pomper les messages SOCKET ? [ par jeppy ] Salut à tous, Voila, j'ai un gros os sur lequel je suis depuis un moment et impossible de trouver une réponse ! Je bosse acutellement sur une appli, q


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales