Bonjour à tous,
Je développe une application MFC qui communique avec plusieurs serveurs (11 précisément), pour chaque connexion y a un thread qui gère la socket de communication avec le serveur.
L’association entre thread et socket se fait comme suit:
Thread.cpp
L’application ce charge de lancer le thread et de connecter la socket au serveur. Le problème est que j’essaye d’implémenter un mécanisme de socket bloquante (puisque certaines commandes à envoyer aux serveurs sont bloquantes), j’envoie donc la commande au serveur et je reste en attente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 BOOL CThread::InitInstance() { M__sock = new CMyAsyncSocket(); //CMyAsyncSocket dériver de CAsyncSocket return TRUE; }
L’application envoie la commande socket fait un WaitForSingleObject est attent un setevent qui est dans le onreceive de CMyAsyncSocket.
Le problème est que le WaitForSingleObject bloque aussi mon thread du coup il n’acceder pas à onreceive et donc pas de setevent
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 m__StatusTermineEvent = CreateEvent(NULL,false,false,"CLNT_CMD_LECTURE_THREAD_TERMINE"); . . . . . . . . . DWORD ResultatAttente = WaitForSingleObject(m__StatusTermineEvent,30000); . . . . . . . . ..
Comment remedier à ça ?
MERCI,
![]()
Partager