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 :

arrêter/actualiser un thread


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Par défaut arrêter/actualiser un thread
    Bonjour

    dans une application gtk, j'ai un thread qui tourne en arrière plan en boucle infini.
    le thread il est comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    gpointer *thread(gpointer data)
    {
    //debu:instruction
    while(1)
    {
     
     
    }
     
    }
    le problème c'est que j'ai besoin d'actualiser ce thread si l'utilisateur clic sur un bouton, ca veut dire que je veux revenir au début de la fonction thread.
    j'ai essayé de terminer le thread et de le relancer mais sans succès, ces thread sont avec la glib.

    Merci de m'aider

  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
    Pour faire passer un message de ton thread principal vers ton thread secondaire, tu peux utiliser une GAsyncQueue, et verifier dans le while(1) de ton thread si t'as eu un message ou non dans ta GAsyncQueue. Ou sinon tu peux juste partager une variable t'indiquant si tu dois repartir au début entre tes 2 threads en protégeant convenablement l'accés a cette variable avec un mutex.
    Par contre, tu ne fais pas appel à des fonctions de gtk+ dans ton 2éme thread j'espère?

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Par défaut
    Bonjour

    le problème est résolu, j'ai utilisé une variable partagé comme vous l'avez dit, après vérification de cette variable dans la boule infini je lance le même thread , j'initialise la variable, et je sort du thread, comme ça il s'actualise avec succès, avant j'ai essayé le goto, mais ça a posé des problème, et pour ta question, et ben oui je fai appel a des fonctions gtk pour l'affichage des boite de dialog, et ça pose pas problème, il faut seulement les appeler avec g_idle_add() .

    je connais pas les mutex, si tu peu me faire une introduction .
    Merci.

  4. #4
    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
    http://mdalbin.developpez.com/tutori...al/semaphores/ a peut etre une explication sur ce que c'est un mutex, une fois que tu as compris ce que c'est/comment ça s'utilise, adapter ça pour utiliser les GMutex ne devrait pas être très dur.
    Lorsque tu utilises g_idle_add, le callback sera appelé dans le thread principal, donc si tous tes appels à gtk+ sont faits dans de tels callbacks, alors tu ne fais pas d'appels à des fonctions gtk+ depuis d'autres threads, et c'est très bien

Discussions similaires

  1. Comment arrêter tous les Threads ?
    Par Ceubex dans le forum Général Java
    Réponses: 9
    Dernier message: 04/01/2011, 14h10
  2. arrêter immédiatement un thread
    Par tomlev dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 06/08/2008, 14h04
  3. Arrêter / Stopper un Thread défini
    Par ouranos21 dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 30/01/2008, 14h25
  4. Réponses: 14
    Dernier message: 04/06/2007, 22h43
  5. Arrêter proprement le thread d'une JFrame
    Par fabrisss dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 04/12/2006, 12h32

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