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 :

lancer une fonction toutes les 2 unités de temps


Sujet :

C

  1. #1
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut lancer une fonction toutes les 2 unités de temps
    bonjour,

    Je souhaiterais lancer une fonction toutes les 2 unités de temps mais je ne sais pas comment composé l'instruction.

    je suppose qu'il faut utiliser la librairie time.h,mais comment l'utiliser...aucune idée, j'ai fait une petite recherche dans la faq et rien.

    Donc pourriez vous m'indiquer ou me donner un exemple

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    tout dépend ce que représente une unité de temps pour toi ? Si c'est une seconde alors suffit de soustraire deux dates (date actuelle et la date butoire) le tout dans une boucle while et lorsque la différence est est nulle, tu exécute le code voulu (dont une partie devra mettre à jour la date butoire pour l'ammener 2 secondes plus tard).

  3. #3
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    juste une remarque : il faudra aussi penser au cas ou la fonction met plus de 2 secondes a s'executer. (on sait jamais).
    car dans ce cas la, la prochaine date butoir pourrait s'averer etre une date passee et on obtiendrait une boucle infinie. C'est 3x rien a changer, mais il ne faut pas l'oublier.

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Allez c'est bientot Noël :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main (void)
    {
       time_t start, now;
     
       time (&start);
       while (1)
       {
          time (&now);
          if (difftime (now, start) >= 2)
          {
             printf ("Top\n");
             time (&start);
          }
       }
       return EXIT_SUCCESS;
    }

  5. #5
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    je m'explique alors:
    Dans mon projet je dois générer une energie toutes les 2 unités de temps...
    Et je pense que cete unité de temps est défini par la vitesse d'execution du programme (vu qu'il en a une) et donc en fonction de cette vitesse je devrai la multiplier par 2 pour obtenir mes 2 unités et donc tester (si il existe pas de fonction déjà faite pour) et executer ma fonction génératrice d'energie

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Merci pour le code, j'en ferai bon usage...

  7. #7
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Deux solutions :
    Tu veux que ton programme soit indépendant de la cadence du processeur. Dans ce cas, tu bases tous tes calculs sur les temps en seconde.

    Soit tu souhaites que ton programme soit dépendant de la cadence du processeur, et dans ce cas, il faut que tu cherches dans les API spécifiques à ton OS si quelque chose de ce goût là existe (comme par exemple les jiffies sous linux).
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Merci à vous tous

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Points : 26
    Points
    26
    Par défaut
    gege, tu fais une attente active :S, et tu est modérateur, donc modère ton post .

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par gege2061
    Allez c'est bientot Noël :
    C'est un peu horrible !

    On préfère calculer l'échéance "echeance = now + delai" et ensuite tester si on a dépassé cette échéance. Un seul calul.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <stdio.h>
    #include <time.h>
     
    int main (void)
    {
       int const delai = 2;
       time_t echeance = time(NULL) + delai;
     
       for (;;) /* the geek way ! */
       {
          if (time (NULL) >= echeance)
          {
             puts ("Top");
             echeance = time(NULL) + delai;
          }
       }
       return 0;
    }
    Mais ça ne résout pas le problème de l'attente active. (Sleep(), sleep(), usleep() etc.)
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. [Prototype] Lancer une fonction toutes les x millisecondes
    Par DevilYann dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 25/01/2010, 11h03
  2. lancer une fonction toutes les 10s
    Par Emcy dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 16/11/2006, 16h43
  3. Lancer une fct toutes les x minutes
    Par mambo dans le forum MFC
    Réponses: 8
    Dernier message: 21/06/2006, 23h16
  4. lancer une procedure toutes les minutes precisemment
    Par Alextk dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 06/06/2006, 15h10
  5. Réponses: 8
    Dernier message: 09/01/2006, 16h58

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