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

C++ Discussion :

Tuer un thread


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    psl
    psl est déconnecté
    Membre éprouvé
    Avatar de psl
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 98
    Par défaut Tuer un thread
    Bonjour,
    Un petit soucis avec les threads. Je lance un tread qui exécute une fonction contenant une boucle sans fin.
    Jusqu'à ce point tout fonctionne. Mais je soufaite tuer ce thread pour arrêter la boucle infernale un peu comme pthread_cancel de pthread.h
    Mais avec la bibliothèque thread je n'y arrive pas.
    Comment faire ?
    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
    #include <iostream>
    #include <thread>
    #include <unistd.h>
     
    void affiche(){
        for(;;){
            std::cout << "*" << std::flush;
            usleep(500*1000);
        }
    }
     
    int main(){
        std::thread trois(affiche);
        trois.join();
        return 0;
    }
    merci

  2. #2
    Membre expérimenté Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    Par défaut
    Salut,

    Une solution propre, c'est de sortir de ta boucle pour quitter le thread.

    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
    #include <iostream>
    #include <thread>
    #include <atomic>
     
    std::atomic_bool running(false);
     
    void display()
    {
        while (running)
        {
            std::cout << "*" << std::flush;
        }
    }
     
    int main()
    {
        running = true;
        std::thread three(display);
        running = false;
        three.join();
        return 0;
    }

  3. #3
    psl
    psl est déconnecté
    Membre éprouvé
    Avatar de psl
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 98
    Par défaut
    Re,
    Merci RPGamer pour cette réponse ultra rapide.
    J'ai utilisé ta proposition dans code et cela fonctionne "nickel".
    Mes vieux neurones ont parfois du mal à avoir une vision globale des solutions possibles.
    Mais une réponse clair et précise, comme dans le cas présent, m'encourage à me "soigner"
    @+

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

Discussions similaires

  1. Tuer un thread bloqué en lecture.
    Par Anonymouse dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 08/02/2008, 11h36
  2. tuer un thread en attente (socket)
    Par LesLemmings dans le forum Visual C++
    Réponses: 1
    Dernier message: 18/03/2007, 09h50
  3. Probléme pour tuer un Thread
    Par peyo_le_fou dans le forum POSIX
    Réponses: 5
    Dernier message: 04/11/2006, 14h10
  4. [D6] Comment tuer un Thread ?
    Par Lung dans le forum Langage
    Réponses: 6
    Dernier message: 28/04/2006, 11h42
  5. [Debutant] Faut-il tuer les Threads Static?
    Par sniperseb dans le forum MFC
    Réponses: 5
    Dernier message: 05/12/2005, 14h43

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