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

  FORUM HardWare.fr
  Programmation
  C

  probleme thread pthread_join

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme thread pthread_join

n°1515685
niemad
Posté le 16-02-2007 à 16:49:36  profilanswer
 

Bonjour,
 
Je fais un program sous Cygwin utilisant des threads et ca marche pas. J'ai donc decide de faire le plus simple possible et ca marche toujours pas! J'utilise le code de Emmanuel Delahaye disponible sur son site (http://mapage.noos.fr/emdel/pthreads.htm) :

Code :
  1. #include <stdio.h>
  2. #include <pthread.h>
  3. static void *task_a (void *p_data)
  4. {
  5.    puts ("Hello world A" );
  6.    (void) p_data;
  7.    return NULL;
  8. }
  9. static void *task_b (void *p_data)
  10. {
  11.    puts ("Hello world B" );
  12.    (void) p_data;
  13.    return NULL;
  14. }
  15. int main (void)
  16. {
  17.    pthread_t ta;
  18.    pthread_t tb;
  19.    puts ("main init" );
  20.    pthread_create (&ta, NULL, task_a, NULL);
  21.    pthread_create (&tb, NULL, task_b, NULL);
  22. #if 1
  23.    pthread_join (ta, NULL);
  24.    pthread_join (tb, NULL);
  25. #endif
  26.    puts ("main end" );
  27.    return 0;
  28. }


 
et ca me donne le resultat suivant:

Code :
  1. main init
  2. Hello world A


... comme si le pthread_join n'avait aucun effet... c est le meme probleme que ce que j ai dans mon code plus complique. Je n'y comprends plus grand chose alors toutes pistes serait la bienvenue!
 
merci

mood
Publicité
Posté le 16-02-2007 à 16:49:36  profilanswer
 

n°1515701
Taz
bisounours-codeur
Posté le 16-02-2007 à 17:46:09  profilanswer
 

si ton programme est correctement compilé (-pthread) c'est juste que puts n'est pas threadsafe. Et sans doute pas l'appel système en dessous. Enfin je l'ai déjà constaté hors cygwin

n°1515711
niemad
Posté le 16-02-2007 à 18:07:34  profilanswer
 

Taz a écrit :

si ton programme est correctement compilé (-pthread) c'est juste que puts n'est pas threadsafe. Et sans doute pas l'appel système en dessous. Enfin je l'ai déjà constaté hors cygwin


 
oui j'ai compile avec la ligne de commande gcc -lpthread -o test main.c (j'ai aussi essaye avec le -lpthread a la fin car je ne suis pas sure de la position mais ca ne change rien).
Meme si puts n'est pas threadsafe, j'aurais du avoir l'affichage de la 2eme thread ("Hello world B" ) non? Car j'ai mon pthread_join avant le puts. Normalement le main devrait donc attendre la fin de mes 2 threads avant d executer le puts non (j'ai enlever le premier puts("main inits" ) pour eliminer cet eventuel probleme).
Sinon qu'est ce que tu me conseil au lieu de puts qui serait threadsafe?

n°1515713
Taz
bisounours-codeur
Posté le 16-02-2007 à 18:12:37  profilanswer
 

compile avec -pthread et pas -lpthread

n°1515736
niemad
Posté le 16-02-2007 à 18:42:26  profilanswer
 

Taz a écrit :

compile avec -pthread et pas -lpthread


 
C'est ce que j'avais mis au debut mais gcc me repond "gcc: unrecognized option -pthread" alors que je n ai pas ce problem avec -lpthread.

n°1515804
Taz
bisounours-codeur
Posté le 16-02-2007 à 21:43:46  profilanswer
 

bon tout ça est quand même suprenant

n°1516405
niemad
Posté le 19-02-2007 à 12:51:42  profilanswer
 

Taz a écrit :

bon tout ça est quand même suprenant


 
oui je sais, mais a priori c'est a cause de Cygwin. J'ai essaye sous Linux ce week-end et j ai pas le meme probleme. Je ne suis pas sure de ce qui ne marche pas sous Cygwin.

n°1516422
Taz
bisounours-codeur
Posté le 19-02-2007 à 13:39:23  profilanswer
 

la sémantique POSIX de write est complexe en terme d'environnement threadé. La glibc essaie de faire un peu mieux mais a priori rien ne garantie pas grand chose. Dans l'absolue, il ne faudrait pas s'appuyer dessus. Tu peux faire un thread d'affichage avec une file d'attente. C'est propre et facile.


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

  probleme thread pthread_join

 

Sujets relatifs
Probleme pour ouvrir POPUP avec IE et flashproblème compilation (link)
[résolu] Probleme d'appel d'un objet dans ma classeProbleme de différence firefox/ie
Problème DATETIME USprobleme d'overflow avec variables type Double [résolu]
Problème d'encodage de caractères Access MySQLProbleme logo sur site internet
Problème pour aligner une image sur le texteprobleme en php
Plus de sujets relatifs à : probleme thread pthread_join


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