Horloge en c++ sensible à la microsecondes

Signaler
Messages postés
5
Date d'inscription
samedi 9 mai 2009
Statut
Membre
Dernière intervention
5 octobre 2011
-
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
-
Bonjour à tous,

Je travaille sur un simulateur qui doit générer des données de la mme taille périodiquement. Le système il fonctionne comme ceci:

A t=0 => On initialise notre système
.. "Il pourrait
.. qu'il se passe rien
.. ici c'est à dire le système es en veille"

A t=x => le premier flux de données est généré
A t=x+T => le second flux de données est généré
.
.
A t=x+nT => le (n+1)ème flux de données est généré

avec T = 15µs.

Concrètement je veux avoir une horloge en C++ qui me permet à chaque 15µs, je génère mes données.

Merci d'avance

5 réponses

Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012

Salut!
Source www.unix.com (attention! peut-être pas Windows!):
#include <sys/time.h>
struct timeval tv;
struct timezone tz;
struct tm *tm;
gettimeofday(&tv, &tz);
tm=localtime(&tv.tv_sec);
printf(" %d:%02d:%02d %d \n", tm->tm_hour, tm->tm_min,
    tm->tm_sec, tv.tv_usec);

Je n'ai pas trouvé de code certifié Windows faisant de même pour l'instant ...
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
Je ne crois pas que ce que veux pachalcs soit tout à fait un compteur de temps (sinon il y a ceci qui est multiplateforme: http://0217021.free.fr/portfolio/axel.berardino/articles/calculer-le-temps-execution)

Regarde du côté de boost. Il y a des chronomètre qui te permettent de lancer une tâche à interval choisie.
http://www.boost.org/doc/libs/1_47_0/doc/html/chrono/users_guide.html

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,


A mon avis, en multithreading, le seul moyen est d'augmenter la priorité du thread en "real time" (temps réel). Cela ne garantie pas l'execution a 15us et ça sera toujours dépendant du système et de la machine.

Devenir plus prioritaire suppose que ton code soit rapide en contrepartie afin de rendre la main au plus vite pour les autres threads.

@++
Messages postés
5
Date d'inscription
samedi 9 mai 2009
Statut
Membre
Dernière intervention
5 octobre 2011

C'est exactement ce que je recherche CptPingu, je veux lancer un tache à intervalle choisie
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
@pachalcs: En revanche, il va falloir que tu nous donnes plus de détails. Est-ce que ton application est "multithreadée" ?
Est-ce que les opérations que tu comptes réaliser prennent bien moins de 15 us pour se faire ?

La remarque de patatalo est pertinente, il n'est pas dit que tu puisses réaliser ce que tu veux.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question