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 :

C++ Threads Kill


Sujet :

GTK+ avec C & C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut C++ Threads Kill
    Bonjour,

    Je me demandais s'il était possible de tuer un Glibmm::Thread ?
    Bon logiquement, s'il est joinable, on fait un join et on l'attend, si on veut l'arrêter on utiliser une variable externe au thread, ou bien des signaux...

    Mais s'il mouline dans le vide, j'aimerai le nettoyer... La solution serait de répérer son pid et de le tuer sauvagement ? Mais peut-on au moins récupérer proprement son pid ?

    Merci

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Il semblerait que non. Du moins je n'ai rien trouvé de probant dans la documentation officielle.

    Maintenant s'il pédale dans la semoule comment le sais-tu? Si tu peux le savoir de l'extérieur du thread alors il doit être possible de le savoir de l'intérieur, non?

    Maintenant il est précisé, toujours dans la documentation officielle, qu'il faut utiliser Glib::Thread::Exit(); pour arrêter un thread. tu peux toujours essayer de l'extérieur.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    Ben disons que je veux juste mettre une protection, basée sur un timeout par exemple... s'il est trop long et qu'il ne répond pas, pof, je le kill

    Oui j'ai lu le Glib::Thread::Exit(), mais si j'ai bien compris (j'ai dit si ) c'est dans les méthodes du Thread qu'il s'utilise, pas de l'extérieur... sinon si j'ai plusieurs threads, comment savoir lequel je kill

    En truc tordu je me disais qu'il pourrait m'envoyer par signal son pid, mais c'est moche Dans ce cas-là, je vais me rabattre sur des fork

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Mais quand tu crées un thread tu récupères bien son pointeur, non?

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    Oui, mais si je me rappelle bien, tu ne peux faire qu'un yield ou un join dessus, et il me semble que la doc dit qu'il est déconseillé de détruire l'objet récupéré....

    Mais maintenant que tu me fait répondre ce que je réponds, je me demande s'ils ne disent pas ça dans les cas d'arrêt propres, en précisant qu'il vaut mieux attendre avec join, ou le laisser se terminer tout seul.... Je pourrais essayer

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Oui il me semble que la doc. dit ca pour éviter des fuites mémoires. Si tu prends en compte cette donnée tu peux peut-être construire ton thread de manière à ce qui se termine à n'importe quel moment sans provoquer de fuite.

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    Oui je vais envisager cette option...

    A ce propos je me demande, si je fork, et que le père fait un kill sur le pid du fils, est-ce que les conditions d'arrêts du processus (concernant fuites mémoires, etc) sont les même que si je détruis le thread ?

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

Discussions similaires

  1. [MySQL-5.0] Kill thread sur mysql administrator
    Par Blooster dans le forum Administration
    Réponses: 0
    Dernier message: 23/04/2013, 17h01
  2. Stopper un Thread planté (fonction kill ?)
    Par anadoncamille dans le forum Général Java
    Réponses: 3
    Dernier message: 31/10/2011, 00h30
  3. Comment Forcer le Kill d'un thread
    Par thecrafty dans le forum Général Java
    Réponses: 17
    Dernier message: 18/11/2010, 17h40
  4. Kill Thread en java
    Par liavart dans le forum Général Java
    Réponses: 1
    Dernier message: 02/11/2009, 23h11
  5. Réponses: 2
    Dernier message: 06/03/2007, 11h07

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