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 :

Multi-processus : limiter la vie d'un processus à la vie d'un processus parent


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut Multi-processus : limiter la vie d'un processus à la vie d'un processus parent
    Bonsoir!

    J'ai dans mon jeu du code de "serveur" que pour l'instant j'isole dans un thread à part. Dans une partie solo, le serveur doit tourner sur la machine locale et la partie client du jeu s'y connecte via le réseau (si on peut dire).

    Après quelques discussions sur un autre forum, j'envisage de passer à un différent processus pour la partie serveur. J'ai toutefois quelques réticences, rapport princiapelement au débuggage.

    J'ai donc procédé a un petit test aujourd'hui : lancer un processus simple a partir du jeu et voir comment le tout réagis (en debug puis en release).

    J'ai mis en place ce code, avec une commande dans la console du jeu qui permet de lancer le processus. Le "controle" du processus est encapsulé dans une classe qui termine le processus enfant soit via une fonction soit dans le destructeur.

    Pour lancer et terminer le processus, j'utilise boost::process (qui n'est pas encore dans boost). Le lancement du processus marche bien. J'ai pour l'instant une erreur lorsque j'appelle terminate() sur le processus enfant. Je n'ai pas encore cherché l'origine du problème mais ce n'est de toutes manières pas très important ici. Le fait est qu'une exception est levée puis loggée puis continue son chemin jusqu'à ce que l'application crash (un problème dans ma stratégie de gestion des erreur visiblement, mais c'est un autre problème).

    Ce qui est problématique c'est que j'ai eu une exception et après quelques minutes d'analyse j'ai quitté le mode debug (sous visual studio 2008). J'ai continué de chercher l'origine du problème un moment.

    Puis j'ai découvert que le procesus enfant était toujours en train de s'executer!

    Je voudrais donc savoir, en tant que débutant dans le domaine multi-process, comment vous faites pour gérer ce genre de cas : comment faire pour que le processus enfant ai toujours une vie limitée par la vie du processus parent, même si le parent s'arrête de manière abrupte ("crash")?

  2. #2
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    On m'a suggéré d'utiliser un systeme de ping plus ou moins et je pense que ça règlera le problème effectivement.

    Il me reste a savoir comment debugger un processus enfant à partir de visual studio...

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Plutôt qu'un ping qui ressemble à une attente active, j'aurais d'abord regardé du côte de Boost.Inter process avec :
    -> le process père prend un mutex. Il le relâche en se terminant. Normalement, si le père plante, le mutex devrait être relâché par le système (? à tester).
    -> le process fils crée un thread en attente du mutex. Lorsqu'il l'obtient, il déclenche une exception.

  4. #4
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Ok, j'ai pas une idée claire de l'implémentation mais je vais voir ça, merci du conseil

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

Discussions similaires

  1. lancement processus limité
    Par lesafir dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 21/04/2009, 15h44
  2. multi processus perl
    Par mickael.guilbert dans le forum Langage
    Réponses: 5
    Dernier message: 31/05/2007, 12h43
  3. generation xml multi processus
    Par mickael.guilbert dans le forum Modules
    Réponses: 3
    Dernier message: 28/05/2007, 19h46
  4. [Ma vie] les sujets sur ma vie me rendent malade
    Par DavidDeTroyes dans le forum La taverne du Club : Humour et divers
    Réponses: 36
    Dernier message: 17/07/2006, 14h43
  5. Problème de limitation de taille d'un processus.
    Par vince3320 dans le forum Administration système
    Réponses: 3
    Dernier message: 23/03/2006, 13h48

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