Bonjour,
J'essaye de faire passer une structure en argument lors de la création de mon thread, j'obtiens un warning.
Puis lorsque je tente de récupérer les paramètres dans la fonction chargée par le thread, rebelotte erreur
Je vous montre ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 static Thread Liste_Arguments[10]; int main () { pthread_t thread[10]; for(i= 0; i<9; i++) { Liste_Arguments[i].pipe_lecture = fdpipe_in[i][R]; Liste_Arguments[i].pipe_ecriture = fdpipe_out[i][W]; Liste_Arguments[i].term_id = i; pthread_create(&thread[i], NULL, thread, (void *)&Liste_Arguments[i]); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void *thread (void *arg) { /* On fait une "copie" pour ne pas modifier la structure passee en argument */ Thread Cpy_Args; /* On recupere chaque argument */ Cpy_Args.pipe_lecture = (Liste_Arguments *)arg-> pipe_lecture; Cpy_Args.pipe_ecriture = (Liste_Arguments *)arg-> pipe_ecriture; Cpy_Args.term_id = (Liste_Arguments *)arg-> term_id;
Ma structure déclarée dans le header :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 typedef struct Thread Thread; struct Thread { int pipe_lecture; /* Le pipe sur lequel le thread va lire */ int pipe_ecriture; /* Le pipe sur lequel le thread va écrire */ int term_id; /* Le numéro du terminal que le thread va observer */ };
Voilà ça devrait suffire.
Donc dans ma console j'ai :
Les lignes 110,111,112 correspondent à la phase de récupération des arguments (Cpy_Args....)arnaud@debian:91: warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type
/usr/include/pthread.h:227: note: expected ‘void * (*)(void *)’ but argument is of type ‘pthread_t *’
arnaud@debian: In function ‘thread’:
arnaud@debian:110: error: expected expression before ‘)’ token
arnaud@debian:111: error: expected expression before ‘)’ token
arnaud@debian:112: error: expected expression before ‘)’ token
Help
Partager