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 :

Problème gestion timer multithread


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Problème gestion timer multithread
    Je désire incrémenter un compteur à intervalles réguliers. Je veux aussi que cette incrémentation se fasse dans un thread spécifique. Et enfin je veux travailler en temps réel.

    Pour faire ça je ne sais pas trop comment m'y prendre mais voilà ce à quoi j'avais pensé mais je pense que je n'utilise pas bien les fonctions POSIX car mon code ne compile pas.

    Dans le main:
    Créer le thread spécifique en appelant la méthode CreateRunThread de la classe MyClass.
    Créer et lancer un timer à l'aide des fonctions timer_create et timer_settime. Le timer va me générer à intervalle régulier l'évènement event (de type struct sigevent), je définis cet évènement comme le signal SIGRTMIN à l'aide de
    SIGEV_SIGNAL_INIT(&event, SIGRTMIN).
    Puis j'envoie ce signal au thread attaché à la méthode Run qui incrémente le compteur à l'aide de signal(SIGRTMIN,myclass->Run) , Run étant la méthode de la classe MyClass qui va incrémenter le compteur.

    Qu'est ce qui cloche?
    J'ai joint mon code et mes messages d'erreurs
    NB:j'utilise une classe car ce petit programme est seulement un test pour une application plus grande
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Je déplace ton topic dans le forum C++.

    Car ton problème est un problème basique C++...

    Pour passer ta fonction run() de ta classe MyClass à pthread_create(), elle doit être déclarée comme statique et être passée directement (et pas par son adresse)

    De plus, comme elle est statique, tu ne peux utiliser le pointeur this dedans...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    D'accord je te remercie pour ton aide, effectivement étant à la base un programmeur C, j'ai un peu de mal effectivement avec les notions de méthodes statiques. Par curiosité, pourquoi la méthode doit-elle être passée directement et non par son adresse? En regardant le protoype de pthread_create j'avais l'impression qu'il fallait passer l'adresse d'une fonction.
    Par ailleurs, en ce qui concerne la fonction SIGNAL utilisée dans le main, SIGNAL(SIGRTMIN, Run) par exemple est ce que ça relaie bien tout signal SIGRTMIN au thread exécutant Run? Parce que c'est ce que je veux faire mais je ne sais pas si c'est ce que fait

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    quand tu passes une fonction en paramètre, c'est toujours son adresse qui est passé...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

Discussions similaires

  1. Problème de Timer
    Par nikus_knx dans le forum MFC
    Réponses: 7
    Dernier message: 18/05/2006, 14h27
  2. Problème de Timer
    Par hammag dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 25/04/2006, 17h52
  3. [VC++ - MFC] Problème de Timer
    Par Alice9 dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2006, 13h51
  4. [VB6] Problème contrôle Timer et boucle For-Next ...
    Par Stéphane BEHMENBURG dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 01/12/2005, 17h36
  5. Problème - Gestion des exceptions - MFC.
    Par Atomikx dans le forum MFC
    Réponses: 4
    Dernier message: 14/11/2005, 09h38

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