Attendre un thread

Audias06 Messages postés 5 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 15 octobre 2007 - 15 oct. 2007 à 12:25
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 - 17 oct. 2007 à 16:34
Bonjour,

Mon application (C++ SOUS VISUAL NET) nécessite de lancer un
thread puis, que pendant ce temps, l'application principale (qui à lancé le
thread) attende que le thread lui redonne la main pour
continuer.

Application principale -> lance le thread
le thread
s'exécute et l'application principale est à l'arrêt (attend)
le thread se
termine -> l'application principale reprend la main est
continue...

pour le moment j'ai utilisé un handle, définis dans mon appli
principal avant de lancer le thread:
          m_hEvent = CreateMutex(NULL,
FALSE, NULL);  // name of mutex
          OpenMutex(SYNCHRONIZE
,TRUE,"m_hEvent");
 
// on lance le thread qui gère le traitement de la
séquence d'analyse                
AfxBeginThread(ThreadTraitement,this,THREAD_PRIORITY_LOWEST,0,THREAD_TERMINATE,NULL);
   
     
//on attend la fin du
thread
WaitForSingleObject(m_hEvent,INFINITE); //45000

//on détruit le
handle
ReleaseMutex(m_hEvent);
m_hEvent = NULL;

Et évidemment à la
fin de mon thread, j'envoie à mon appli principal le handle pour sortir du wait
for...

ReleaseMutex(dialog->m_hEvent);

ÇA NE MARCHE PAS:
mon appli principal n'attend pas au niveau du wait for.... il passe devant comme
si de rien n'était...

Une idée ???

Merci.

4 réponses

NeuroCypher Messages postés 29 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 24 octobre 2007 1
15 oct. 2007 à 13:52
Je comprend pas l'interet d'avoir un thread si tu veux que le main process attende la fin d'execution du thread.

<hr size="2" width="100%" />NeuroCypher
0
Audias06 Messages postés 5 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 15 octobre 2007
15 oct. 2007 à 14:00
Oui merci, c'est sûr vu comme ça... mais bon, nous
n'avons pas le choix au vu de se que nous devons faire ...
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
15 oct. 2007 à 18:40
J'utilise pas trop les mutex mais il me semble qu'avec WaitForSingleObject tu demandes l'accès au mutex (ownership); dans ton cas puisque le mutex n'a pas été utilisé il retourne tout de suite avec l'accès validé.
Pour attendre simplement un thread :
HANDLE hThread=CreateThread(...);
WaitForSingleObject(hThread,...).

Coome tu utilises AfxBeginThread, il retourne CWinThread donc regarde si tu peux récupérer un handle dans cette structure.
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
17 oct. 2007 à 16:34
Bonjour,

Comme le dit NeuroCypher, l'intérêt d'un thread est PLUS QUE LIMITé.
Pourquoi ne pas intégrer ton code directement dans ton main?


<hr />


Nico
0
Rejoignez-nous