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 :

Comment impl�menter classe TimeOut?


Sujet :

C++

  1. #1
    Membre actif
    Inscrit en
    Ao�t 2007
    Messages
    94
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2007
    Messages : 94
    Par d�faut Comment impl�menter classe TimeOut?
    Bonjour,

    J'aimerais cr�er et utiliser une classe TimeOut dans mon logiciel, qui me permettrait de :
    - cr�er un TimeOut avec en param�tre une fonction � appeler lorsque le TimeOut est �coul�e.
    - d�marer le TimeOut
    - stopper le TimeOut

    Comment faire?

    Voici � quoi pourrait ressembler l'interface :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    typedef void (*functionForTimeOut)(void);
     
    TimeOut::TimeOut (functionForTimeOut par_f_timeout, unsigned long par_ul_time);
    TimeOut::start();
    TimeOut::stop();
    Merci d'avance pour votre aide.

  2. #2
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    Le sujet des timers est assez d�licat. Quels utilisation en auras-tu ? On impl�mente pas de la m�me mani�re un timer multim�dia (pr�cis), et un timer pour de l'interface graphique ou autre.

    De toute fa�on, � moins que tu disposes d'une boucle principale dans ton programme, il faudra passer par des APIs sp�cifiques � l'OS, et pas seulement au C++.

  3. #3
    Membre actif
    Inscrit en
    Ao�t 2007
    Messages
    94
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2007
    Messages : 94
    Par d�faut
    Citation Envoy� par NiamorH Voir le message
    Le sujet des timers est assez d�licat. Quels utilisation en auras-tu ? On impl�mente pas de la m�me mani�re un timer multim�dia (pr�cis), et un timer pour de l'interface graphique ou autre.

    De toute fa�on, � moins que tu disposes d'une boucle principale dans ton programme, il faudra passer par des APIs sp�cifiques � l'OS, et pas seulement au C++.
    Je veux une classe timer tout simple (ni pour interface graphique, ni pour multim�dia) dans un thread s�par�.
    Mais je ne sais comment faire?

    En fait, je lis continuellement sur une socket qui me renvoie des donn�es, et je veux faire un truc du style :

    1. Lancer Timer pour attendre DONNE_ATTENDU
    2. Traiter donn�e re�u
    Si donn�e re�u == DONNE_ATTENDU stopper timer
    Sinon continuer � recevoir donner
    3. Si timeOut expir� alors appel d'une fonction

    En gros, j'aimerais faire une classe g�n�rique TimeOut.

  4. #4
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    Tu pourrais par exemple lancer un thread Boost qui executerait un truc du style :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    // calcul de l'heure d'arret
     
    while ( isTimerRunning && ( heureActuelle < heureArret ) )
    {
    }
     
    if ( isTimerRunning )
      func();
    Tu peux mettre un sleep dans ta boucle pour pas saturer le proc.
    Le meilleur moyen est quand m�me de se plonger dans les APIs de ton OS.

  5. #5
    Membre actif
    Inscrit en
    Ao�t 2007
    Messages
    94
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2007
    Messages : 94
    Par d�faut
    Citation Envoy� par NiamorH Voir le message
    Le meilleur moyen est quand m�me de se plonger dans les APIs de ton OS.
    Mon OS est Windows.
    Quelqu'un aurait une meilleure solution adapt�e � mon OS?

  6. #6
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    Si tu peux te permettre de faire du code non portable, alors tu trouveras ton bonheur avec l'api win32.

    Regarde ici : http://www.codeguru.com/cpp/misc/mis...cle.php/c3785/ quelqu'un � d�j� cod� �a, tu devrais pouvoir t'en inspirer.

    Si tu recherches un timer tr�s pr�cis (ce qui n'a pas l'air d'�tre le cas), je te conseilles ce lien : http://blogs.msdn.com/larryosterman/...08/462477.aspx



    [EDIT] En fait, la source de mon premier lien est un peu complexe.
    Pour faire un timer simplement, tu fais #include <Windows.h> et tu te sers des fonctions Win32 d�crites ici :
    http://windows-programming.suite101....in32_timer_api
    http://windows-programming.suite101....lback_function

  7. #7
    Membre actif
    Inscrit en
    Ao�t 2007
    Messages
    94
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2007
    Messages : 94
    Par d�faut
    Citation Envoy� par NiamorH Voir le message

    [EDIT] En fait, la source de mon premier lien est un peu complexe.
    Pour faire un timer simplement, tu fais #include <Windows.h> et tu te sers des fonctions Win32 d�crites ici :
    http://windows-programming.suite101....in32_timer_api
    http://windows-programming.suite101....lback_function
    Oui mais l� il faut un handle de Windows... alors que moi �a serait juste en ligne de commande ... pas de windows...

  8. #8
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    En fait, tu peux mettre NULL comme handle de window. Il faut juste que tu stocke l'ID du timer au retour de SetTimer si tu comptes l'arr�ter avant qu'il ne se d�clenche.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 08/07/2014, 18h41
  2. Comment impl�menter lemonldap?
    Par Aldo dans le forum Apache
    R�ponses: 7
    Dernier message: 25/01/2007, 21h32
  3. Comment impl�menter un Datawarehouse ?
    Par raslain dans le forum Alimentation
    R�ponses: 2
    Dernier message: 20/10/2005, 11h09
  4. comment modifier le timeout d'une vye dans sql server 2K ?
    Par jlassira dans le forum MS SQL Server
    R�ponses: 4
    Dernier message: 07/10/2005, 11h28
  5. [Serveur] Comment d�sactiver un "timeout" ?
    Par Johnbob dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    R�ponses: 4
    Dernier message: 04/12/2004, 01h24

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