La page manuelle GetItimer (2) affirme P>
TV_SEC et TV_USEC significatif pour déterminer le Durée d'une minuterie p> blockQuote>
Cela ne va pas dire pourquoi c'est. Dans de nombreux exemples que j'ai rencontrés, TV_SEC est simplement défini sur 0, tandis que TV_USEC reçoit une valeur raisonnable ou envers la valeur. Ces minuteries comptent-elles simultanément ou constituent le compte à rebours total TV_SEC + TV_USEC? Devrais-je utiliser les deux? Ni non plus? P>
5 Réponses :
Oui, le temps total est la somme des deux. TV_SEC est les secondes. Et TV_USEC est des microsecondes au-delà de cela. p>
Donc, par exemple, si je leur ai donné des valeurs de 1 et 250000 respectivement, cela serait de 1,25 seconde?
La structure est décrite cependant: comme vous le voyez, le temps total est TV_SEC + (1.0 / 1000000) * TV_USEC code> secondes. C'est pourquoi, lorsque vous avez besoin de fois moins d'une seconde que vous avez défini
TV_USEC code>, lorsque vous avez besoin de fois plus de 1sec, vous définissez les deux (mais finalement finalement défini uniquement (code> TV_SEC code>) p> < / p>
peut-être TIME_T TV_SEC; SUSECONDS_T TV_USEC; code>?
the Page Man Documents Le TIMEVAL CODE> Structure:
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
De plus, USEC n'est-il pas autorisé à dépasser 1 seconde?
POSIX ne semble pas spécifier de comportement pour tous les cas d'angle (TV_USEC <0, TV_NSEC <0, TV_USEC> 1000000, TV_NSEC> 1000000000), il est donc préférable de ne pas laisser cela arriver.
J'ai eu une fuite de mémoire à cause de cela, je n'ai pas réglé TV_USEC. Comaut prend une somme de ces deux valeurs et si vous n'initialisez pas l'un d'entre eux, la valeur de somme pourrait être aléatoire. P>
long int tv_usec C'est le reste de la durée écoulée (une fraction d'un Deuxièmement), représenté comme le nombre de microsecondes. C'est toujours moins d'un million. p> blockQuote>
TV_SEC gérera les secondes complètes, tandis que TV_USEC gère les microsecondes. P>
Les microsecondes se réinitialiseront à 0 lorsqu'il arrivera à son maximum (1 million) et incrémente les secondes comme un chronomètre normal. P>
Je ne crois pas que la page de l'homme inclut "pourquoi sont ..."
Vous êtes un homme intelligent!