Bonjour tout le monde !
J'ai un petit soucis de thread...
Le main() de mon code accepte des connexions tcp puis les redirige vers des threads qui eux gereront les lectures / ecritures dessus...
Cependant, impossible de faire communiquer mon thread Main et mes threads creees...
La fonction PostThreadMessage me renvoit toujours l' ERROR_INVALID_THREAD_ID
J'ai bien essaye de le mettre dans une boucle et un sleep, comme le preconise la MSDN mais rien n'y fait
Code du main:
Code du Thread:
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 thread = CreateThread(NULL, 0, servControl::thClientControl, NULL, 0, NULL); if (thread == NULL) { cerr << "Couldn't create thread !" << endl; cerr << "(errcode " << GetLastError() << ")" << endl; closesocket(cSock); // gestion mess erreur utilisateur a creer } thHandles[thread] = 1; while (PostThreadMessage(reinterpret_cast<DWORD>(thread), WM_USER, NULL, cSock) == NULL) //envoyer message pour ajouter socket { cerr << "Could not send infos to the thread 2 !\n"; Sleep(1); }
Merci a tous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE); while (TRUE) { if (PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_REMOVE)) { cerr << "Got a mess !\n"; if (msg.message == WM_USER){ clients.push_back((SOCKET)msg.lParam); cerr << "Got a new socket ! " << (SOCKET)msg.lParam << endl; } } }
Partager