Thread et paramètres

cs_sena Messages postés 126 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 15 février 2005 - 25 avril 2003 à 16:11
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 17 juin 2003 à 15:45
sujet : thread et paramètres

bonjour,

voila j'ai fait un petit programme de test pour l'éxcution de thread.
je souahiterais faire la même chose en passant une valeur entière en paramètre. Est-ce possible?

Voila le pti programme:

DWORD WINAPI MaThread(LPVOID lpParameter)
{
Sleep(200);
printf("Je suis dans ma thread \n");
return 0;
}

int main (void)
{
DWORD threadID;
CreateThread(NULL, 0, MaThread, NULL, 0, &threadID);

Sleep(10000);

printf("fin du programme de test de threads\n");
return 0;
}

10 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 avril 2003 à 18:45
C'est quoi le prob ? Tu peux passer TOUT ce que tu veux en param à ta func de thread.
Si 1 seule valeur(int ou DWORD) alors direct.
Si plusieurs tu passes adresse d'une structure contenant tous les params.
exemple un entier:
hthread = CreateThread(0, 0, MaThread, 12, 0, &threadID);
MASTRUCT strct;
hthread = CreateThread(0, 0, MaThread, &strct, 0, &threadID);
CloseHandle(hthread); NE PAS OUBLIER !!!
BruNews, ciao...
0
cs_sena Messages postés 126 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 15 février 2005
25 avril 2003 à 19:22
désolé mais je pige po !
voila ce ke je fais pour passer un entier et ca veut pas !
Que dois-je modifier?

DWORD WINAPI MaThread(int param)
{
Sleep(200);
printf("Je suis dans ma thread \n");
return 0;
}

int main (void)
{
DWORD threadID;
int entier = 12;

CreateThread(0, 0, MaThread, &entier, 0, &threadID);

Sleep(10000);
printf("fin du programme de test de threads\n");
return 0;
}

Pour info j'ai ca comme erreur:
error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (int)' to 'unsigned long (__stdcall *)(void *)'

Merci beaucoup.
None.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 avril 2003 à 19:29
cast (DWORD*)
BruNews, ciao...
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
25 avril 2003 à 19:33
Comme te l'as expliqué BruNews, si tu veux passer un entier en paramètre de ta ThreadProc, tu le passes directement.

DWORD WINAPI MaThread(LPVOID param)
{
int n=(int)param;

return 0;
}

DWORD threadID;
int n= 12;

CreateThread(0, 0, MaThread, (LPVOID)n, 0, &threadID);

Kaid - kaid.fr.st
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_sena Messages postés 126 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 15 février 2005
25 avril 2003 à 19:38
désolé, je ne voudrai pas paraitre désagréable ou te donner l'impression de te faire perdre ton temps mais pourrait tu etre plus clair stp?

ou veux tu que je force le type à DWORD* ?
peut tu rajouter ce kil faut au code de mon message d'avant STP?

Parske je comprend vrémen po?
Merci de ta patience ....

None.
0
cs_sena Messages postés 126 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 15 février 2005
25 avril 2003 à 19:42
PARFAIT,

ca marche nickel :o)

Je vous remercie tout les deux du temps que vous m'avez consacrer.

Merci encore.
None.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 avril 2003 à 19:47
HANDLE hthread;
hthread = CreateThread(0, 0, MaThread, (DWORD*) &entier, 0, &threadID);
// statements...

chez le lanceur ajouter cela:
CloseHandle(hthread); // OBLIGATOIRE !!!
hthread = 0; // sert d'indicateur
Tu peux aller voir ma derniere source publiee, tout cela y est et fonctionnant, va sans dire.
BruNews, ciao...
0
cs_haribo Messages postés 5 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 17 juin 2003
17 juin 2003 à 15:14
slt BruNews
tu peux me donner le nom de ce projet stp. Car g besoin d faire tourner des thread sous MFC. c'est pour de la communication avec socket. faudrai que tu me reponde le plus vite possible (le 18/06)
Merci d'avance, cordialement haribo
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juin 2003 à 15:26
faudrait fouiller, maintenant je ne me souviens plus laquelle de source. Par contre file moi un mail et je t'envoie un exemple de thread en mfc que j'ai retrouve.
BruNews, ciao...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juin 2003 à 15:45
http://www.cppfrance.com/article.aspx?Val=1743
retrouve un exemple de thread.
BruNews, ciao...
0
Rejoignez-nous