bonjour,
voila j'ai un programme ou j'utilise le multi-thread
donc je crée un thread
mon thread est créé et lancer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 m_TraitementX = (CTraitement*) AfxBeginThread(RUNTIME_CLASS(CTraitement),THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); ASSERT_VALID(m_TraitementX); m_TraitementX->ResumeThread(); ...
il passe dans le constructeur puis lance la fonction Run.
pour le tuer j'utilise
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 CTraitement::CTraitement() { ... } int CTraitement::Run(void) { do { i = 0 ; recvfrom(RecvSocket, RecvBuf, BufLen, 0, (SOCKADDR*)&SenderAddr, &SenderAddrSize); ... } while(!flag); }
dans le run
Code : Sélectionner tout - Visualiser dans une fenêtre à part AfxEndThread(0);
mais voila j'ai une boucle do while pour que mon thread pour l'arreter quant je veux(je passe flag a true.
mon programme est bloqué au niveau de la reception du socket (il attandun message).
alors quand je passe mon flag a true (a patire d'un autre classe) mon thread sera tué apres la reception du socket.
peut-on tuer un thread alors qu'il est en attende du socket
AfxEndThread peut-il etre utiliser autre par quen dans la classe Run
merci
Partager