Oltre alla differenza di precisione, quali sono le differenze tra e struct timespec
? Se ho bisogno di meno precisione di μs (ad esempio, millisecondi), perché dovrei usarne uno rispetto all'altro?c in tempo reale vs timespec
Sul mio compilatore (GCC per ARM):
/* POSIX.1b structure for a time value. This is like a `struct timeval' but
has nanoseconds instead of microseconds. */
struct timespec
{
__time_t tv_sec; /* Seconds. */
__syscall_slong_t tv_nsec; /* Nanoseconds. */
};
/* A time value that is accurate to the nearest
microsecond but also has a range of years. */
struct timeval
{
__time_t tv_sec; /* Seconds. */
__suseconds_t tv_usec; /* Microseconds. */
};
Con entrambi __syscall_slong_t
e __suseconds_t
definito come una "parola lunga".
Si utilizza la struttura corretta per le chiamate di sistema che si intende utilizzare - 'struct timeval' per' gettimeofday() '(e' select() '), e' struct timespec' per 'clock_gettime()'.Per l'elaborazione interna, è possibile utilizzare uno o entrambi, come è conveniente per te. La conversione tra i due è relativamente indolore; input e output richiedono un minimo di attenzione (principalmente assicurandosi che gli zeri iniziali per la parte frazionaria vengano stampati e scansionati correttamente quando necessario). BSD e Mac OS X forniscono alcune primitive funzioni aritmetiche e di confronto per 'struct timeval'; non esiste un analogo per 'struct timespec'. –
Si dovrebbe guardare [Perché C ha così tanti tipi diversi] (http://stackoverflow.com/questions/31157164/) che chiede anche 'struct timeval'. –