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

Threads & Processus C++ Discussion :

Est-ce possible de retrouver un thread détaché ?


Sujet :

Threads & Processus C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 28
    Points : 23
    Points
    23
    Par défaut Est-ce possible de retrouver un thread détaché ?
    Bonjour,

    J'ai lu plusieurs articles ( en Anglais ) et j'ai encore un peu de mal à capter certaines choses.

    Dans le thread principal lors du lancement d'un programme, je souhaite faire en sorte qu'un thread fils contenant une boucle infinie soit lancé dans un deamon indépendant du thread principal de façon à ce que mon programme s’exécute en arrière-plan tout en me rendant la main lorsque le thread principal arrive en fin d’exécution.

    Je voulais au départ utiliser la méthode "std::thread::detach" mais d'après ce que j'ai compris, une fois détaché, je ne pourrais jamais retrouver mon thread fils.

    Je voulais passer par des solutions comme la récupération de l'id "std::thread::id" ou les méthodes "atomic", mais je crois comprendre dans la documentation qu'une fois le thread fils détaché, je n'aurais plus la bonne id.

    Ma question est en deux points :

    1) Est-ce que je m'y prend bien en voulant détacher le thread fils contenant une boucle infinie ? Si oui, que dois-je utiliser pour pouvoir retrouver et tuer ce dernier proprement en mettant fin à la boucle infinie.
    2) Sinon, quelle solution me conseillez-vous pour pouvoir effectuer la manœuvre décrite au départ ?

    Merci par avance pour vos lumières.

  2. #2
    Membre confirmé Avatar de KsassPeuk
    Homme Profil pro
    Ingénieur Chercheur
    Inscrit en
    Juillet 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 138
    Points : 635
    Points
    635
    Par défaut
    Lu'!

    Qu'est ce que tu essaies de faire en vrai ? Ce que tu essaies de faire, ça ressemble beaucoup plus à lancer un processus séparé du programme en cours.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    Oui c'est exactement ça. Je veux que le programme tourne en arrière plan tout en ayant récupérer la main. Pour donner un exemple, imaginons que sous windows je lance la console, et à partir de la, je lance mon exécutable avec des paramètres dans la commande ( myProg.exe start ). Une fois le programme démarré, je veux que la console me rende la main et que je puisse faire ce que je veux derrière comme fermer la console et n'importe quoi d'autre mais que mon programme lui continue à bosser malgré ça en arrière-plan. Enfin, je veux pouvoir désactiver le programme ( qui tourne toujours en arrière-plan ) en redémarrant la console + la commande de l’exécutable avec les bon paramètres ( myProg.exe stop ) et faire en sorte que mon programme en rentrant les bon paramètres puisses me donner l'état dans lequel y se trouve ( en activité ou éteint par exemple ).

    Voila et pour la mise en place, j'explique comment je comptais m'y prendre dans mon premier poste mais j'ai bien peur que sa ne soit pas la bonne solution.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 170
    Points : 12 291
    Points
    12 291
    Par défaut
    Sous Windows, on utilise des services et pas des cochonneries à base de console des années Disco.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    Oki, merci pour le renseignement. Je vais donc étudier cette piste. Je me doutais bien que je m'y prenais pas comme il fallait en voulant utiliser les threads pour ça mais bon si je savais tout, je ne viendrais pas demander en même temps. Donc il faut que je code en utilisant les daemons des OS directement ( que sa soit nt ou unix ).

    Sinon pour ma question quand même, est-il possible de retrouver un thread détaché ou pas du tout ? ( hors contexte de ma situation, je ne demande ça qu'a titre théorique ).

    Merci encore.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 170
    Points : 12 291
    Points
    12 291
    Par défaut
    Un thread est un processus léger, ne disposant pas de son espace d'adressage propre mais uniquement d'un jeu de segment (pile, data au minimum).
    Un thread soit meurt avec son processus hôte, soit maintient en vie le processus hôte, point bar.

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

Discussions similaires

  1. Le multi-threading est-il possible ?
    Par mamax29 dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 01/04/2011, 11h35
  2. SDL_BlitSurface dans un thread, est-ce possible ?
    Par kashikai dans le forum SDL
    Réponses: 2
    Dernier message: 26/05/2009, 16h35
  3. [Collection] Retrouver la clé d'un item, est-ce possible ?
    Par marchand_de_sable dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 04/06/2008, 13h31
  4. HashMap en multi-thread et NullPointerException ; comment est-ce possible ?
    Par sami44 dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 09/01/2008, 15h43

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