IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèque standard C Discussion :

[Pthreads-win32]: plantage de libpthreadGC2.a ?


Sujet :

Bibliothèque standard C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut [Pthreads-win32]: plantage de libpthreadGC2.a ?
    Salut a tous,

    J'essaye d'utiliser la librairie pthreads-win32 avec MinGW/MSYS sans success.... alors que ca fonctionne a merveille sous linux.

    J'ai ecris un petit code test pour illustrer le probleme. Je n'ai sais pas si ca vient de ma machine ou si c'est mon code...
    Dans mon code je fais appel a Python.h pour lancer l'interpreteur python a partir de mon code C, soit en mode 'normal' sans thread, soit dans un thread separe du main():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    // compile under MingGW/MSYS with:
    // gcc program.c -o program.exe -lpython25 -lpthreadGC2 
     
    #include <stdio.h>
    #include <Python.h>
    #include <pthread.h>
     
    int using_thread=0;
     
    void *run_python_console(void *arg);
     
    int main(int argc,char **argv){
     
    //managing command line arguments
    if(argc<2){fprintf(stdout,"this program needs arguments. 0 for sequential, 1 for multithreading\n");exit(1);}
    using_thread = atoi(argv[1]);
    if(using_thread!=0 && using_thread!=1){fprintf(stdout,"Unkown argument. Use 0 for sequential, 1 for multithreading\n");exit(1);}
     
     
    //if running in sequential mode
    if(using_thread==0){
       run_python_console("");
    }
    //if running in threads
    else{
       pthread_t pth;
       pthread_create(&pth,NULL,run_python_console,"");
    }
     
    fprintf(stdout,"coucou!\n");fflush(stdout);
     
    return 0;
    }
     
    void *run_python_console(void *arg)
    {
     
       fprintf(stdout,"Python console loading.....\n");fflush(stdout);
     
       Py_Initialize();
     
    	  fprintf(stdout,"interactive loop\n");fflush(stdout);
     
          PyRun_InteractiveLoop(stdin,"<stdin>");
     
      fprintf(stdout,"unloading python...\n");fflush(stdout);
      if(Py_IsInitialized()==1){Py_Finalize();}
     
     
    return;
    }
    Si je lance 'program.exe 0', je vois le l'intrepreteur de python qui se lance...tous va bien.

    Par-contre, si je lance 'program.exe 1', tout se passe comme si le thread n'a meme pas ete cree !

    quelqu'un a une idee ?

    Merci d'avance

    David

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par dmichel Voir le message
    J'essaye d'utiliser la librairie pthreads-win32 avec MinGW/MSYS sans success....
    Je n'ai pas de problèmes avec ça :

    http://emmanuel-delahaye.developpez.com/pthreads.htm

    J'utilise pthreadGC1

  3. #3
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Bonjour,

    "libpthreadGC2.a" sonne comme une bibliothèque pour Unix, essaie d'en prendre une en .lib. Il y a un fichier du genre README qui explique comment la choisir.

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par dapounet Voir le message
    "libpthreadGC2.a" sonne comme une bibliothèque pour Unix, essaie d'en prendre une en .lib. Il y a un fichier du genre README qui explique comment la choisir.
    Mais non, ça dépend du compilateur :
    • Visual C++ : xxx.lib
    • MinGW : libxxx.a

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    En effet, j'utilise MinGW et donc le lib*.a !

    Sinon sur http://sourceware.org/pthreads-win32/!, Je ne vois que pthreadGC2, pas de pthreadGC1
    D'ailleur je ne vois nul part l'explication de la difference entre pthreadGC1, pthreadGC2 et pthreadGCE2, etc... Quelqu'un peut-il m'aider sur ca ?

    Je pensais que cela pouvait venir de ma machine, mais j'essaye sur plusieurs PC different (tous XP) et toujours la meme chose. Y-aurait-il un probleme dans mon code ?

    Je vais essayer le hello world de http://emmanuel-delahaye.developpez.com/pthreads.htm en test

  6. #6
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Par défaut
    Autant pour moi! Dohhh!

    J'avais oublie de mettre un pthread_join() apres le pthread_create()...
    et comme le main ne faisait rien, il se terminait avant et donc le comportement etait indetermine...

    sinon quelqu'un peut-il tout de meme m'expliquer la difference entre pthreadGC1, pthreadGC2, pthreadGCE2, etc.... ??

    Merci d'avance

    David

Discussions similaires

  1. Portage Win32 threads vers Pthread
    Par azmodai dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 06/02/2011, 14h16
  2. Plantage de pthread
    Par uriotcea dans le forum C
    Réponses: 7
    Dernier message: 30/07/2009, 16h33
  3. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  4. [CVS]: plantage du service sous win32
    Par sleepy2002 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/06/2004, 10h09
  5. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2002, 13h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo