Bonjour
J'ai un probleme dans un programme écrit en C
J'ai dans mon main un pointeur (c'est une file)
Dans ce meme main je cré un thread en passant en parametre le pointeur (apres l'avoir alloué)
Dans le thread j'ajoute des elements a la file (ils sont bien ajouté dans le thread)
mais ensuite dans mon main la file est vide
Voici une partie des sources, vous comprendrez mieux
Code :
- typedef struct Element
- {
- char *valeur;
- struct Element *suiv;
- }element ;
- typedef struct Fifo
- {
- element *debut;
- } fifo;
|
Code :
- fifo *sample;
- sample=(fifo*)malloc(sizeof(fifo));
- init_fifo(sample); //met sample->debut a NULL
|
Code :
- pthread_t adr_thread;
- if(pthread_create(&adr_thread,NULL,record,(void *)sample) !=0)
- {
- printf("Erreur de création de thread\n" );
- exit(-1);
- }
- sleep(3);
- if(pthread_cancel(adr_thread)==0)
- printf("Thread record arrété\n" );
- printf("%s\n",sample->debut); //cela m'affiche "NULL"
|
Je precise bien que le ppointeur de nom "debut" est modifié dans le thread et donc n'est plus NULL, ceci ayant bien lieu avant que "NULL" ne soit affiché
Message édité par ffomnislash le 26-11-2004 à 13:23:44