[THREAD] PostThreadMessage - Petite erreur
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:
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);
} |
Code du Thread:
Code:
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;
}
}
} |
Merci a tous :)