Thread en visual C++

Signaler
Messages postés
50
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
22 mai 2006
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour a tous,
je voudrais savoir comment on peut programmer un thread en visual C++.

Je sais par exemple k'en java il faut implementer l'interface Runnable et definir la fonction run(). En visual C++ ke dois-je faire pour dire qu'une classe est un thread?

Merci pour vos reponses.

3 réponses

Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

Il faut declarer une fonction dans le meme genre. Si tu fait sa avec des api win32, il faut rajouter DWORD WINAPI nom_de_fonction ( LPVOID param), creer un handle pour ton thread, un id et le lancer avec la fonction CreateThread.
Petit exemple :
tu veux qu'une fonction qui s'appelle fCoucou soit un thread :

// declaration des identifiants pour ton thread
HANDLE Thread_fCoucou;
DWORD ID_fCoucou;

// prototype de la fonction
DWORD WINAPI fCoucou (LPVOID param);

// lancement du thread
Thread_fCoucou = CreateThread(NULL, NULL, fCoucou, 0, &ID_fCoucou);

// pour fermer ton thread
TerminateThread(Thread_fCoucou, ID_fCoucou);

Voila pour les grandes lignes. Sinon va voir sur http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createthread.asp pour la fonction CreateThread et sinon
http://www.cppfrance.com/code.aspx?ID=28177 qui est tres interressant pour voir le fonctionnement de tout ça.
En esperant avoir repondu a ta question

@++ et bonne prog !!

"Avant même de fonctionner, tout programme est déjà obsolète."
Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

Petite erreur de ma part :
c'est pas

// lancement du thread
Thread_fCoucou = CreateThread(NULL, NULL, fCoucou, 0, &ID_fCoucou);

mais

Thread_fCoucou = CreateThread(NULL, 0, fCoucou, 0, &ID_fCoucou);

desole ....

"Avant même de fonctionner, tout programme est déjà obsolète."
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Attention aux classes avec les APIs:
le runtime C ne sera pas au courant, donc aucune gestion aautomatique.
TerminateThread fermera le thread sans appeler de destructeur.
Fuites mémoire à prévoir.

Il convient d'utiliser _beginthreadex() pour parer à tous ces désagréments.

ciao...
BruNews, MVP VC++