Thread,pb de debutant

Signaler
Messages postés
2
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
2 avril 2006
-
Messages postés
2
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
2 avril 2006
-
Bonjour, je suis debutant sur les thread et je n'y connait rien et j'ai le probleme suivant:
creation de 2 thread A et B .le thread A cree 2 autres thread C et D qu'il attendra avant de termine
fin
je ne sais pas comment implementer la solution en Cpp

5 réponses

Messages postés
2
Date d'inscription
jeudi 1 décembre 2005
Statut
Membre
Dernière intervention
11 avril 2006

La méthode AfxBeginThread (MFC) permet de démarrer un WorkerThread, c'est-à-dire un thread qui exécute une tâche dans son coin - en multitâche, bien sûr - et qui se termine tout seul quand la tâche est finie. Vois l'aide en ligne pour les paramètres... Pour générer un thread Windows, qui tourne dans sa propre fenêtre, alors il faut créer une instance de CWinThread... C'est plus lourd à gérer mais ça se fait... Là encore, l'aide en ligne de VC++ propose un exemple de création de ce type de classe... Après, une fois qu'il est démarré, ça se gère comme ton A...
Par définition, il ne faut surtout pas arrêter A avant C et D, sinon, tu vas tuer le père avant les fils, et ça, il faut pas... Sinon, quand ton thread va s'arrêter, boum !
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Tien voici un petit exemple de thread

unsigned _thread1 (LPVOID param)
{
int i= NULL;

while(i < 10)
{
i++;
}

return 0;
}

puis dans ta fonction principal ou WM_CREATE (ou alors ailleur en autant qu'il ne soit pas executé en boucle constante comme dans un while ou WM_PAINT)
HANDLE thread1;

thread1 = CreateThread(0, 0xFF, (LPTHREAD_START_ROUTINE)_thread1, 0, 0, 0);

et un peut plus loin
CloseHandle(thread1);

Voila ça aura comme effet de fair rouler la fonction _thread1 tout en fesant continuer le programme.

Tu peut aller voir sur MSDN CreateThread pour plus de renseignement.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
En passent, ceci est en API pas en MFC

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

Je mettrai un WaitForSingleObject(thread1,INFINITE); avant le CloseHandle pour être sûr que le père ne se termine pas avant le fils.
Messages postés
2
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
2 avril 2006

j'ai compris le pricipe du pere et le fils
le pere doit attendre la fin des threads fils qu'il a cree pour teminer
mon probleme se reside plus dans:
1-Creation du thread
2-Affectation de ses parametres(choix des valeurs)
3-Terminer le thread
dans borland C++ 5.0
Merci