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 :

Gtk vs Threads sous Win32


Sujet :

GTK+ avec C & C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 38
    Points
    38
    Par défaut Gtk vs Threads sous Win32
    Bonjour à tous et à toutes.

    J'ai actuellement une application utilisant gtkmm en développement. Dans cette application, j'ai 2 processus gérer l'affichage tout en ayant un processus principale qui tourne en permanence.
    L'intérêt est de pouvoir avoir une interface facultative qui tourne par dessus un cycle principale.

    Donc pour cela :
    1) Je crée mes fenêtres dans le cycle principale
    2) Je lance un thread avec le Gtk::Main::run() pour ne pas bloquer le processus principale
    3) Le processus principale continu de tourner normalement pendant que le run() ne bloque pas le reste.

    Cette technique (quoique peut-être étrange me dirons certain mais obligatoire de par la structure de mon application) fonctionne parfaitement sous Linux.
    Le problème c'est qu'elle doit également être porté sous Windoz, et là, quand le run() est dans un thread, les interfaces ne semble plus gérer par la pile d'événement (elle se réaffichent même plus). Si le run() est dans le thread principale, aucun problème, mais ça bloque le reste du processus sur le run().

    Après maintes recherche, j'ai cru comprendre que les threads Windows & Linux était différent parce que Gtk et basé sur X11. Le problème c'est que j'aimerai sincèrement pouvoir exécuter mes fenêtres depuis ce thread, où, à la limite pouvoir appeler à intervalle régulier la gestion des événements Gtk avoir mon interface fonctionnel.

    Voilà.
    Si quelqu'un à une idée dans ce domain, je lui en serai très reconnaissant, car j'ai aussi du mal à comprendre le fonctionnement interne de Gtk.

  2. #2
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Bon, après beaucoups de test, j'ai une piste sur le pourquoi.
    En réalité, sous Windows, il y a un "domain" Gtk par threads. Pour chaque "init" on crée un domain et tout ce qui est crée dans chaque domain reste dans son domaine.
    Contrairement à Linux, quand on crée le "domaine" il est générale pour chaque thread.

    Il ne reste plus qu'a trouver comment rendre le "domaine" générale.

+ Répondre à la discussion
Cette discussion est résolue.

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. Thread sous vc++
    Par Axiome dans le forum MFC
    Réponses: 1
    Dernier message: 04/01/2006, 11h26
  3. Ouvrir une URL en C/C++ sous Win32
    Par pykoon dans le forum MFC
    Réponses: 7
    Dernier message: 26/04/2005, 09h08
  4. Problème de creation de thread sous linux
    Par xilebo dans le forum POSIX
    Réponses: 4
    Dernier message: 27/10/2004, 09h58
  5. [CVS]: plantage du service sous win32
    Par sleepy2002 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/06/2004, 10h09

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