Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2313 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Threads et variables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Threads et variables

n°908430
ffomnislas​h
Posté le 26-11-2004 à 13:23:01  profilanswer
 

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 :D
 
Voici une partie des sources, vous comprendrez mieux ;)
 

Code :
  1. typedef struct Element
  2. {
  3. char *valeur;
  4. struct Element *suiv;
  5. }element ;
  6. typedef struct Fifo
  7. {
  8. element *debut;
  9. } fifo;


 
 

Code :
  1. fifo *sample;
  2. sample=(fifo*)malloc(sizeof(fifo));
  3. init_fifo(sample); //met sample->debut a NULL


 

Code :
  1. pthread_t adr_thread;
  2. if(pthread_create(&adr_thread,NULL,record,(void *)sample) !=0)
  3. {
  4. printf("Erreur de création de thread\n" );
  5. exit(-1);
  6. }
  7. sleep(3);
  8. if(pthread_cancel(adr_thread)==0)
  9. printf("Thread record arrété\n" );
  10. 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
mood
Publicité
Posté le 26-11-2004 à 13:23:01  profilanswer
 

n°908569
Lam's
Profil: bas.
Posté le 26-11-2004 à 15:22:11  profilanswer
 

Tu compile bien avec une option de type "-mt" ou "-pthread" ou autres, pour dire à ton compilo de pas faire de suppositions sur l'aliasing et la volatilité ?
 
D'autre part, pourquoi ne fais tu pas un phtread_join (plutôt qu'un pthread_cancel qui est de très mauvais aloi) ?

n°908592
ffomnislas​h
Posté le 26-11-2004 à 15:36:54  profilanswer
 

Je compile avec l'option "-lpthread"
 
Sinon je vais voir ce que fait exactement le join ;)

n°908610
Lam's
Profil: bas.
Posté le 26-11-2004 à 15:43:54  profilanswer
 

ffomnislash a écrit :

Je compile avec l'option "-lpthread"


Ca suffit pas forcément, car seul ton linker sera au courant du fait que ton code est concurrent. Essaye avec "-pthread" (je crois que c'est comme ça sous Nilux).

n°908672
ffomnislas​h
Posté le 26-11-2004 à 16:39:05  profilanswer
 

je viens de tester avec -pthread
je n'ai pas d'erreur mais le problême persiste :(
 
Je me demandais si ce ne serait pas plutot le thread qui recré ces propres variable, un peu comme avec un fork

n°908677
Lam's
Profil: bas.
Posté le 26-11-2004 à 16:43:10  profilanswer
 

ffomnislash a écrit :


Je me demandais si ce ne serait pas plutot le thread qui recré ces propres variable, un peu comme avec un fork


Nope. Fais voir le code de ta fonction record à tout hasard.

n°908691
ffomnislas​h
Posté le 26-11-2004 à 16:59:26  profilanswer
 

record fait un enregistrement depuis le micro alors je vais juste garder les parties en rapport.
 
Me voici de retour avec un peu de retard ;)
 
En faite j'ai résolue mon probleme
Cela n'avait rien a voir avec le thhread ;)
 
J'ajouter des elements dans ma file puis par la suite je la vidé
donc a la fin il n'y avait plus rien dedans :D


Message édité par ffomnislash le 26-11-2004 à 19:41:14

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Threads et variables

 

Sujets relatifs
Passage de variables VB vers C++mes threads font ce qu'il veulent ! [Pas tout à fait resolu]
[C/UNIX] *Resolu* Les threads[C++] Lié des variables a l'intérieur d'une struct à...
Déclarer des variables dans un fichier externePasser des variables entre fichier ?
Winsock et Threads (Boost) : Problèmepreg_replace et balises à arguments variables
1 variable ==> 2 variablesprobleme erreur Undefined offset variables de session
Plus de sujets relatifs à : [C] Threads et variables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR