Bonjour,
dans un programme j'utilise des threads, aucunne erreur de compilation ou quoi que ce soit, mais j'ai le problème suivant:
mon processus principal lit un fichier ligne par ligne, une fois la ligne obtenue, un thread va la traiter. Seulement, la procédure associée au thread reçoit apparemment la dernière ligne du fichier à chaque fois...
en effet, pour un fichier de 3 lignes par exemple, si je teste la valeur de chaque ligne avant de passer la ligne en arguments, les 3 lignes ont bien été lues.
Dans la procédure de l'argument si je demande qu'il m'imprime successivement toutes les lignes qu'elle reçoit, elle m'affichera 3 fois la ligne numéro 3.
Mon code est le suivant, rien d'exeptionnel..
au niveau de l'envoi de la ligne lue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <...> while(fgets(line,256,f)!= NULL) { /* traitement de la ligne, lancement du premier groupe de threads (un seul pour l'instant) */ printf("ligne envoyée 1 = %s", line); pthread_create( &tid[cpt], NULL, lecture_aux, (void*)line); cpt++; } <...>
au niveau de la réception de la ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void* lecture_aux(void * line){ char* path = (char*) line; /* recuperation de l'argument */ FILE *f; int i,size; char *fileName; /* cope de path sans '\n' ni buffer vide après */ printf("ligne recue = : %s\n",path); <...>
mes threads se terminent bien, le problème ne devrait pas venir de là.
Les threads ayant parcontre en commun le même code que le processus principal, le problème ne viendrait-il pas de là?
J'espere avoir été clair dans mes explications.
D'avance je vous remercie
Partager