Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2790 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

...

n°1518585
allez-pari​s
Posté le 22-02-2007 à 19:44:53  profilanswer
 

...


Message édité par allez-paris le 14-03-2008 à 16:40:47
mood
Publicité
Posté le 22-02-2007 à 19:44:53  profilanswer
 

n°1518587
Koyomi
www.sebastiengilles.com
Posté le 22-02-2007 à 20:04:23  profilanswer
 

tu fait un thread avec un test toutes les secondes sur une variable qui contient le temps de la dernière action.
Dans ton application, a chaque action utilisateur tu update cette variable.
 
Maintenant cette solution est vraiment "bourrine" il y a peut etre d'autres possibilitées

n°1518589
allez-pari​s
Posté le 22-02-2007 à 20:07:19  profilanswer
 

...


Message édité par allez-paris le 14-03-2008 à 16:40:57
n°1518591
allez-pari​s
Posté le 22-02-2007 à 20:17:57  profilanswer
 

...


Message édité par allez-paris le 14-03-2008 à 16:41:02
n°1518795
breizhbugs
Posté le 23-02-2007 à 11:48:58  profilanswer
 

Koyomi a écrit :

tu fait un thread avec un test toutes les secondes sur une variable qui contient le temps de la dernière action.
Dans ton application, a chaque action utilisateur tu update cette variable.
 
Maintenant cette solution est vraiment "bourrine" il y a peut etre d'autres possibilitées


Moi je dirais l'inverse:
Tu fais un thread pour faire tes actions et c'est dans le programme principale qui controle le thread en utilisant un timer et engerant et transmettant les E/S clavier au thread.
Sinon quel est l'environnement exact (windows/linux, mode concole/GUI)?


Message édité par breizhbugs le 23-02-2007 à 11:50:02
n°1518831
allez-pari​s
Posté le 23-02-2007 à 12:41:27  profilanswer
 

...


Message édité par allez-paris le 14-03-2008 à 16:41:05
n°1518935
breizhbugs
Posté le 23-02-2007 à 15:01:08  profilanswer
 

Je dois dire qu'en C++ je sais pas, mais en C y avait kbhit() qui pourrait faire l'affaire mais je ne suis pas sur que ce soit standard/portable.

n°1519719
Dost67
Posté le 25-02-2007 à 20:19:25  profilanswer
 

Quand je faisais ça sous Linux (en C) j'utilisais des alarm(0) pour réinitialiser le timer et des alarm(3000) (ou alarm(3), je sais plus) pour le faire attendre 3 secondes.
Avec il fallait programmer un handler et déclarer ce handler pour le signal SIGALRM. Le handler était appelé quand le temps était écoulé.

 

Edit :
En fait je faisais ça dans une boucle infinie dans un programme à base de XLib.

Code :
  1. Déclarer handler de SIGALRM
  2. alarm(3)
  3. while (true)
  4. {
  5.   Scruter les entrées -> entrée
  6.   if (Valide(entrée))
  7.   {
  8.     alarm(0)
  9.     doAction()
  10.     alarm(3)
  11.   }
  12. }


Et quand il ne se passe rien c'est le handler de SIGALRM qui est appelé. Dedans il faut faire un exit.


Message édité par Dost67 le 25-02-2007 à 20:23:13

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  ...

 

Sujets relatifs
Plus de sujets relatifs à : ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR