Problèmes avec les thread et les pointeurs
Bonjour,
voilà je dois réaliser un programme fonctionnant avec l'aide des thread de la manière suivante :
- Un processus ( thread principal ) crée un thread
- Ce thread reçoit un nombre en paramètre qu'il affichera à l'écran, à la fin de son traitement, il renvoit ce nombre multiplié par 2.
- le thread principal attend la terminaison du thread "fils".
- Une fois terminé, le thread principal doit afficher à l'écran le nombre renvoyé par le thread fils.
La compilation passe. Ce qui est bizzare c'est que l'adresse retournée par le traitementTh1 et l'adresse reçue est la même. Ca doit coincer au niveau de ces deux lignes :
Code:
1 2 3
|
retVal=*((int *)retValTh1);
printf("\nValeur de la variable recu : %d\n", retVal); |
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
void * traitementTh1(void * nbParamTh1);
int main()
{
pthread_t idTh1;
int errTh1, errAttenteTh1;
int paramTh1; int retVal;
void * retValTh1;
// création du premier thread
paramTh1=112;
errTh1=pthread_create(& idTh1, NULL, traitementTh1, (void *) & paramTh1);
if(errTh1!=0)
{ perror("Echec creation du premier thread"); exit(1); }
// attente de la terminaison du premier thread
errAttenteTh1=pthread_join(idTh1, &retValTh1);
if(errAttenteTh1!=0)
{ perror("Echec attente terminaison thread 1"); exit(1); }
else
{
retVal=*((int *)retValTh1);
printf("\nValeur de la variable recu : %d\n", retVal);
}
}
void * traitementTh1(void * nbParamTh1)
{
int nb, nbMult;
// conversion du type en entier du paramètre
nb=*((int *) nbParamTh1);
printf("\nParametre du thread1 : %d \n", nb);
nbMult=nb * 2;
pthread_exit((void *) &nbMult);
} |
Merci d'avance.