[C++] 2 create thread en même temps ?

Résolu/Fermé
Orphée - 26 mai 2008 à 11:12
 mstarsup5 - 17 déc. 2008 à 18:33
Bonjour à toutes et à tous,

Je suis en trai nde programmer une application qui doit exécuter 2 threads en même temps (sous windows). Apres avoir fait des recherches, jutilise la fonction CreateThread et tout ce qui va bien avec. Néanmoins, lorsque je lance mon application, je m'apercois que le thread 1 fonctionne bien mais que le 2 n'est pas activé. Il s'active uniquement lorsque le 1 se termine.

Je me demande donc si cela est normal :/
Si oui, existe t il un moyen d'executer 2 thread en même temps ?

Au risque d'abuser de votre bonté, une seconde question me turlupine.... Comment tuer un thread alors que sa creation et sa destruction ne se feront pas dans la même fonction ?

Merci d'avance pour vos réponses.

Orphée

ex :
hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) tcp_thread->main() , NULL, 0, &iID);
hThread2 = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) com_thread->main() , NULL, 0, &iID2)

hThread2 ne se lance que lorsque 1 a fini ....
A voir également:

2 réponses

Reponse pr ma premiere question trouvée :

DWORD WINAPI Thread( LPVOID IpvThreadParam )
{
// code que le thrad executera
}

Dans le Main :

// Initialisation de la section critique
HANDLE hThread;
DWORD dwThreadId ;
DWORD dwThreadParam = 1 ;

// création des Threads

hThreads = CreateThread ( NULL, NULL, Thread, &dwThreadParam, 0, &dwThreadId ) ;


Mais concernant ma seconde question, je n'ai toujours pas trouvé la solution... :/
0
0
reponse pr la 2eme question :

CloseHandle( GetCurrentThread() );

Je m'explique :
la fonction GetCurrentThread() permet de recuperer le handle necaissaire pr fermer le thread !

Voilà, problème résolu xD

Merci à tous pour votre aide
0
mstarsup5 > Orphée
17 déc. 2008 à 18:33
Salut,

GetCurrentThread ne te donne qu'un pseudo-handle en fait (tu obtiendras toujours la même valeur pour chaque thread normalement)
Pour avoir le handle d'un thread, utilise plutôt GetCurrentThreadId :)
0