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 :

Mettre en pause l'execution d'une fonction en attendant l'execution d'une autre ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Par défaut Mettre en pause l'execution d'une fonction en attendant l'execution d'une autre ?
    Bonjour,

    J'ai une fonction A qui fait appel à une fonction d'une librairie externe,et quand le calcul des paramètres est finit, la librairie externe appelle une fonction B avec le résultat.
    Problème: je ne dois pas quitter la fonction A avant d'avoir eu le résultat de B. Comment mettre l'execution de A en pause pendant ce temps, et comment savoir que B a finit ?

    Merci !

  2. #2
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    C'est pas clair du tout Tu devrais poster un peu de code, même très simplifié.

    A 1ere vue, peut-être que les threads seraient la solution, mais ce n'est pas du tout sûr, n'ayant pas plus de détails ...

  3. #3
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Avec un pipe ça doit se faire non? Ou alors pas compris ce que tu veux faire.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FonctionA(param1,param2)
    {
    FonctionLibrairieExterne(param3);
     
    //Ensuite, j'attend que FonctionB soit appelé par la librairie externe
    //Et je récupère le résultat de la fonction B.. probablement par une variable globale ?
     
    return ResultatFonctionB;
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FonctionB(param4,param5)
    {
    //je viens de récuperer le résultat de la librairie externe
    //maintenant il faudrait notifier FonctionA que j'ai ce résultat, et qu'il peut aller le récuperer
    }

  5. #5
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Les variables globales sont à proscrire en général. Je suppose que tu ne peux pas modifier FonctionLibrairieExterne() et ainsi retourner le retour de FonctionB().

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Par défaut
    Oui j'aimerai bien me passer de variables globales, mais je ne suis pas sur d'avoir le choix ici, et effectivement FonctionLibrairieExterne() n'est pas modifiable et n'a pas de valeur de retour.

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Ce que tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    FonctionA(param1,param2)
    {
    créer evenement (probablement une variable globale ou membre de la classe)
     
    FonctionLibrairieExterne(param3);
     
    attendre evenement (attendre que la fonction de callback signale l'evenement)
     
    //Ensuite, j'attend que FonctionB soit appelé par la librairie externe
    //Et je récupère le résultat de la fonction B.. probablement par une variable globale ?
     
    return ResultatFonctionB;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    FonctionB(param4,param5)
    {
    //je viens de récuperer le résultat de la librairie externe
    //maintenant il faudrait notifier FonctionA que j'ai ce résultat, et qu'il peut aller le récuperer
     
    positionner evenement (pour indiquer à l'autre fonction qu'elle peut redémarrer)
     
    }
    Je te l'ai fait en pseudo code.

    Maintenant, c'est à toi de créer et de gérer ton événement. Il doit y avoir des trucs dans boost pour cela. Sous Microsoft, j'utiliserais un Event Object pour faire cela. Pour Linux, pas d'idée.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/01/2010, 14h48
  2. Réponses: 7
    Dernier message: 10/11/2006, 09h03
  3. Réponses: 4
    Dernier message: 07/11/2006, 11h28
  4. Réponses: 3
    Dernier message: 17/08/2006, 14h43
  5. Une fonction settimeout qui s'execute pas
    Par stepon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/08/2006, 11h55

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