Envoi de parametre dans un thread en C++

Signaler
Messages postés
5
Date d'inscription
lundi 30 octobre 2006
Statut
Membre
Dernière intervention
28 avril 2015
-
Messages postés
1
Date d'inscription
mercredi 12 octobre 2005
Statut
Membre
Dernière intervention
6 juillet 2009
-
Bonjour a tous,

Je me permets de poster un message car je n’ai pas trouver de réponse que j’ai comprise sur le net .
En effet , j ai quelques questions concertant l’envoi de paramètre pour les threads en C++ :

Dans le main.cpp :

void main()
{
    pthread_t thread;
    int toto=3 ;
    pthread_create (&thread, NULL, fonction ,NULL) ;
}

Pourriez vous modifier pthread_create (&thread, NULL, fonction ,NULL) ;pour qu’elle envoi toto en paramètre ?

Dans la fonction.h:
void* client(void* );
Pourriez vous modifier ceci pour  pour que la fonction puisse bien envoyer toto  ?

Dans le fonction.cpp :
void* client( void*)
Pourriez vous modifier ceci pour  pour que la fonction puisse bien recevoir toto  ?

Merci beaucoup !

2 réponses

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
le dernier argument de pthread_create() est un pointeur (optionnel) sur les données à passer en paramètre.
Messages postés
1
Date d'inscription
mercredi 12 octobre 2005
Statut
Membre
Dernière intervention
6 juillet 2009

tout a fait du coup pour ecrire ta fonction du doit mettre:
pthread_create (&thread, NULL, fonction, (void *) toto);

le cast en (void *) est obligatoire, et tu devra recaster en inverse dans ta fonction threadée.
ce qui te donne pour la fonction d'appel:
void* fonction(void * titi)
{
    int variable = (int) titi;
}

et tu peut faire exactement pareil dans la fonction client