¿Cómo puedo expresar 10 milisegundos usando timeval?¿Cómo puedo expresar 10 milisegundos usando timeval?
Esto es lo que tengo hasta ahora:
struct timeval now;
now.tv_usec =10000;
¿Cómo puedo expresar 10 milisegundos usando timeval?¿Cómo puedo expresar 10 milisegundos usando timeval?
Esto es lo que tengo hasta ahora:
struct timeval now;
now.tv_usec =10000;
A struct timeval
representa un tiempo como un número de segundos (tv_sec
) más un número de microsegundos (tv_usec
) entre 0 y 999.999. Por lo tanto, para representar a 10 milisegundos, se utilizaría 10.000 microsegundos, como usted sugiere:
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 10000;
+1 para configurar ambos campos de la hora. – RBerteig
Solo un pequeño punto. De acuerdo con http://www.gnu.org/s/hello/manual/libc/Elapsed-Time.html, el valor de tv_usec siempre es inferior a un millón, es decir, entre 0 y 999.999. De lo contrario, podría representar un segundo en los campos tv_sec y tv_usec, lo cual no tiene sentido según su definición. – binarybob
@binarybob buen punto, no tan pequeño en realidad si tiene que asignar buffer de char del tamaño correcto para microsegundos – 4pie0
Es
struct timeval {
int tv_sec; // seconds
int tv_usec; // microseconds!
ahora.
tv_sec = 0;
tv_usec = 10000;
` estaría bien
Excepto que el campo tv_sec es (probablemente) no inicializado y, por lo tanto, probablemente no sea cero. Sería más seguro establecerlo explícitamente en cero para que la intención sea clara. – RBerteig
Pero, en este caso, tv_sec no se inicializaría correctamente, lo que puede crear problemas. O memset() o asigne cero a tv_sec. – bortzmeyer
Sí, estoy de acuerdo, lo arreglé. – Silfverstrom
Para un caso más general para convertir milisegundos para uso timeval estructura:
int milliseconds = 10;
struct timeval now;
now.tv_sec = milliseconds/1000;
now.tv_usec = (milliseconds % 1000) * 1000;
Por qué downvote? Esta pregunta parece legítima. – Nate