En utilisant Ansi-C sur la plate-forme Windows, puis-je obtenir l’heure du système jusqu’à une précision de millisecondes?

J’ai besoin d’obtenir la précision milliseconde. Je jette un coup d’œil à cette question, mais je travaille sur Windows: cela donne des erreurs de liaison pour les fonctions POSIX.

ce sera très bien si je peux obtenir l’heure UTC depuis 1970 avec une précision de quelques millisecondes.

Pas en ANSI C, mais l’API Windows fournit une fonction GetSystemTime comme illustré ici: http://msdn.microsoft.com/en-us/library/ms724950(v=VS.85).aspx

Désolé, mais vous ne pouvez pas faire cela sans utiliser ANSI C ni l’API Windows.

Vous pouvez obtenir l’heure système avec une résolution en millisecondes avec GetSystemTime ou avec une résolution de 100 nanosecondes avec GetSystemTimeAsFileTime, mais la précision ne sera pas très bonne. L’heure système est uniquement mise à jour à chaque intervalle d’horloge, ce qui représente environ 10 à 15 millisecondes, en fonction de l’architecture sous-jacente (SMP, Uniprocessor, …).

Il existe des moyens d’extrapoler l’heure système à l’aide de différents algorithmes de complexité variable, mais sans la prise en charge du système d’exploitation, vous ne serez jamais assuré de disposer d’un temps d’horloge haute résolution correct.

Dans Windows api, il existe une structure SYSTEMTIME et certains appels système pour obtenir l’heure système et l’heure locale de votre machine. Vous pouvez l’implémenter de la manière suivante:

SYSTEMTIME systime;

GetSystemTime (& systime);

unsigned int millisec = systime.wMilliseconds;