Probleme de passage d'arguments dans un thread
Bonjour,
J'essaye de créer des threads dans mon application.
Voici des extraits de code:
Code:
1 2 3 4 5 6 7 8 9
|
/* --
Structure des parametres que reçoit un thread
-- */
typedef struct
{ char *fichier;
char c;
char v;
} paramsThread; |
Code:
1 2 3 4 5 6 7 8 9 10
|
/* --
Routine du thread
-- */
void *ecriture(void *p)
{
paramsThread params = p;
printf("Contenu de la variable: %s",params.fichier); //TEST QUI NE MARCHE PAS
//.....
} |
Lancement du thread [extrait de 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
|
paramsThread arguments;
int nb_threads = 4;
pthread_t threads[5]; // on prevoit de créer jusqu'a 5 threads
int erreur;
int *resultat;
// on mémorise dans la structure du thread ces 2 valeurs:
//proviennent d'un autre endroit du programme
arguments.c = champ;
arguments.v = valeur;
for(n=1; n<=nb_threads; n++) // on créer les X threads
{
fichier = argv[n];
arguments.fichier = argv[i+n];
erreur = pthread_create (&threads[n], NULL, ecriture, &arguments);
if (erreur != 0) fprintf(stderr,"Echec creation de thread: %d\n",erreur);
pthread_join (threads[n], (void **)&resultat);
printf ("Resultat: %d\n", *resultat);
free (resultat);
} |
Le problème est que je n'arrive pas à retrouver mes variables champ, valeur et fichier... savez-vous pourquoi ?