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

GTK+ avec C & C++ Discussion :

Thread et gtk


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 87
    Par défaut Thread et gtk
    Bonjour,
    j'ai vu qu'il y avait plusieurs problèmes sur ce sujet mais je n'ai pas trouvé la solution dans mon cas.

    J'utilise les pthreads car mon programme n'utilise pas forcément l'interface graphique gtk, c'est au choix pour l'utilisateur.

    Donc voila, j'ai crée un bouton, quand l'utilisateur clique dessus, ca lance une fonction, qui lance les pthreads.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void gtk_start(GtkWidget *menuitem, gpointer userdata)
    {      
        fonction_qui_lance_plusieurs_pthreads();
        return;
    }
     
     
    void gtk_principal()
    {
    ...
    g_signal_connect(G_OBJECT(pButton), "clicked", G_CALLBACK(gtk_start), NULL);
    }
    Le problème avec ce code c'est bien que tout marche bien au niveau des pthreads, le bouton "reste" enfoncé, rien ne se passe tant que les taches des pthreads ne sont pas terminés, et je voudrais que l'utilisateur puisse faire autre chose en attendant.

    J'ai remplacé ce code par l'utilisation des gthreads car il semblerait que ca resoud le problème pour certains, ca donne ceci :

    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
     
    void *fonc (gpointer *data)
    {
       fonction_qui_lance_plusieurs_pthreads(); 
       return NULL;
    }
     
    void gtk_start(GtkWidget *menuitem, gpointer userdata)
    {      
        GThread* th1;
     
        g_thread_init (NULL);
        gdk_threads_init ();
        gdk_threads_enter ();
     
        th1=g_thread_create ((GThreadFunc)fonc, NULL, TRUE, NULL);
     
        gdk_threads_leave ();
     
        g_thread_join(th1);
        return;
    }
     
    void gtk_principal()
    {
    ...
    g_signal_connect(G_OBJECT(pButton), "clicked", G_CALLBACK(gtk_start), NULL);
    }
    Et cette fois ci c'est encore pire, les pthreads sont bien exécutées mais l'interface graphique freeze indéfiniment, la c'est carrément une fenetre blanche "not responding" sous windows, meme quand les taches des pthreads sont terminés. Je suis obligé de quitter le programme violemment.

    Ca compile sans erreurs et warnings,
    je suis sous windows,

    Si quelqu'un a une idée,
    merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Ma réponse standard lors d'un problème avec les threads, c'est de lire et relire http://library.gnome.org/devel/gdk/s...k-Threads.html , et de regrouper tous les appels à des fonctions de gtk+ dans le thread principal (celui où gtk_main a été appelé).

Discussions similaires

  1. utilisation des threads avec gtk en C sous linux
    Par zerimbak dans le forum GTK+ avec C & C++
    Réponses: 10
    Dernier message: 25/04/2011, 19h23
  2. Les Thread avec GTK+
    Par bilred dans le forum Linux
    Réponses: 3
    Dernier message: 13/04/2009, 14h19
  3. Les Thread avec GTK+
    Par bilred dans le forum GTK+
    Réponses: 10
    Dernier message: 10/04/2009, 00h44
  4. [GTK+] Thread en GTK+
    Par Yunchi dans le forum GTK+ avec C & C++
    Réponses: 9
    Dernier message: 23/02/2009, 16h30
  5. Gtk vs Threads sous Win32
    Par Snark dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 21/03/2007, 14h36

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