Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5136 connectés 

 


Dernière réponse
Sujet : [C++] Attendre la fin d'un thread pour quitter
antsite J'ai fais ça mais ça marche toujours pas, là ça se bloque pas mais le thread n'est pas achevé proprement et j'ai un message d'erreur après la fermeture de l'appli :
void CANTChatWin2Dlg::OnClose()  
{
 stops = 1;
 while(WaitForSingleObject(th,TRUE)==WAIT_IO_COMPLETION);
 
 CDialog::OnClose();
}
Ca me prend la tête ce truc  :crazy:

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
antsite J'ai fais ça mais ça marche toujours pas, là ça se bloque pas mais le thread n'est pas achevé proprement et j'ai un message d'erreur après la fermeture de l'appli :
void CANTChatWin2Dlg::OnClose()  
{
 stops = 1;
 while(WaitForSingleObject(th,TRUE)==WAIT_IO_COMPLETION);
 
 CDialog::OnClose();
}
Ca me prend la tête ce truc  :crazy:
H4dd3R Je trouve les classes de synchronisation de win vraiment atroces..
 
Depuis que j´ai défini mes propres classes thread safe en me basant sur le principe qu´un accès mémoire fera jamais moins de 8bits (en gros synchro par un bool) tt marche à merveille.. :)
Alors effectivement si mon principe d´accès par 8 bits mini est pris en défaut je suis mal.. Mais je pense pas que ça arrivera de sitôt!! ;)
karlkox et avec while (WaitForSingleObject(th,TRUE)==WAIT_IO_COMPLETION); ?
antsite Ca marche toujours pas :
voici mon code :
 
HANDLE th;
 
Au chargement :
DWORD x;
th = CreateThread(NULL,0,srv,this,0,&x);
 
void CANTChatWin2Dlg::OnClose()  
{
 stops = 1;
 
 WaitForSingleObject(th,INFINITE);
 CDialog::OnClose();
}
 
Le thread :
DWORD WINAPI srv(void* pDialog)
{
 while(stops == 0)
 {
 ...
 }
 return 0;
}
 
Et ça bloque toujours quand je quitte.
karlkox utilise plutot waitforsingleobject(handle,timestamp) pour syncroniser le tout et arreteter le thread.
antsite Comment dire à mon appli qu'elle attende qu'un thread se termine avant de quitter ?
Voici mon bout de code (MFC) :
 
void CANTChatWin2Dlg::OnClose()  
{
 stop = 1; //dit au thread d'arrêter, mais ça prend du temps, alors on attend :
 while(clok == 0) //clok = 1 à la fin du thread
  Sleep(10);
 
 CDialog::OnClose();
}
 
Mais lorsque que l'on ferme l'appli, ce code bloque tout. (Ctrl Alt Suppr pour arrêter).

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)