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 :

Générer un évènement lorsqu'une variable est modifiée


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut Générer un évènement lorsqu'une variable est modifiée
    Je voulais savoir s'il existe un moyen en C++ de surveiller une variable puis d'appeler une fonction lorsque sa valeur est modifiée.


    Pour vous expliquer rapidement le contexte (parce que ca peut paraître bizarre de vouloir faire ça), j'utilise une fonction bloquante dans mon programme principale qui recoit des images en continue. Dès qu'elle en reçoit une, elle appelle une fonction de callback pour remplir un buffer avec cette image.

    Le truc c'est que je veux ensuite analyser ce buffer dans mon programme principale. Donc je veux détecter quand ce buffer est modifié et appeler une fonction qui pourra le traiter.


    Je travaille avec la version complète de microsoft visual c++.

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    (Bonjour)

    Le pattern Observateur peut être utilisé dans ce cas ci.

    (Merci)

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 503
    Par défaut
    Multi-threading plus Event (http://msdn.microsoft.com/en-us/libr...11(VS.85).aspx), c'est plus simple

  4. #4
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    c'est plus simple
    Sur un plateforme Windows peut-être...et la portabilité du code?

  5. #5
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    boost avec une condition_variable, c'est portable

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    J'ai utilisé le lien de Bacelar et tout marche impec: mon thread principale lit ma variable et la traite tandis qu'un autre thread la remplit (réception des images et appel de la callback).

    Pour éviter les conflits d'accès à cette variable partagée, j'ai utilisé un système lecteur/écrivain semblable à celui-ci.

    Par ailleurs, pour éviter que mon le thread de traitement ne lise plusieurs fois la variable partagée alors que sa valeur n'a pas changé,il attend (waitForSingleObject) que le thread d'acquisition envoie (SetEvent) un "Event" indiquant que la variable partagée a été actualisée.

    Je vous remercie de vos réponses.

    EDIT: et oui ce n'est peut-être pas portable mais le projet sur lequel je travaille s'intègre à un logiciel qui est uniquement distribué sous windows !

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

Discussions similaires

  1. [XL-2010] Mettre une date lorsque un champs est modifié
    Par patch2007 dans le forum Excel
    Réponses: 6
    Dernier message: 27/02/2012, 17h25
  2. Vérifier qu'une variable est un nombre
    Par GLDavid dans le forum Linux
    Réponses: 9
    Dernier message: 13/02/2006, 16h06
  3. Calcul Stock Actuel mm lorsqu'une valeur est null
    Par priest69 dans le forum Access
    Réponses: 3
    Dernier message: 12/09/2005, 18h58
  4. comment tester si une variable est de type indifined
    Par amelhog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/08/2005, 09h32
  5. Comment savoir si une variable est initialisée ?
    Par nabix dans le forum Général Python
    Réponses: 8
    Dernier message: 10/03/2005, 15h12

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