Horloge en c++ sensible à la microsecondes

cs_pachalcs Messages postés 5 Date d'inscription samedi 9 mai 2009 Statut Membre Dernière intervention 5 octobre 2011 - 10 août 2011 à 15:21
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 11 août 2011 à 11:38
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

cs_LA_Tupac Messages postés 305 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 18 janvier 2012 1
11 août 2011 à 01:50
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 ...
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
11 août 2011 à 10:26
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
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
11 août 2011 à 11:02
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.

@++
0
cs_pachalcs Messages postés 5 Date d'inscription samedi 9 mai 2009 Statut Membre Dernière intervention 5 octobre 2011
11 août 2011 à 11:26
C'est exactement ce que je recherche CptPingu, je veux lancer un tache à intervalle choisie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
11 août 2011 à 11:38
@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
0
Rejoignez-nous