¿Cuál es el sistema de temporización más rápido que puede usar un programador C/C++?Sistema de resolución de temporización más rápido
Por ejemplo:
time() dará los segundos desde el 1 de enero de 1970 00:00.
GetTickCount() en Windows dará el tiempo, en milisegundos, desde el momento de inicio del sistema, pero está limitado a 49.7 días (después de eso simplemente vuelve a cero).
Quiero obtener la hora actual, o tics desde el inicio del sistema o la aplicación, en milisegundos.
La mayor preocupación es la sobrecarga del método; necesito la más liviana, porque estoy a punto de llamarla muchas veces por segundo.
Mi caso es que tengo un hilo de trabajo, y para ese hilo de trabajo publico trabajos pendientes. Cada trabajo tiene un "tiempo de ejecución". Por lo tanto, no me importa si el tiempo es el tiempo "real" actual o el tiempo transcurrido desde el tiempo de actividad del sistema; solo debe ser lineal y ligero.
Editar:
unsigned __int64 GetTickCountEx()
{
static DWORD dwWraps = 0;
static DWORD dwLast = 0;
DWORD dwCurrent = 0;
timeMutex.lock();
dwCurrent = GetTickCount();
if(dwLast > dwCurrent)
dwWraps++;
dwLast = dwCurrent;
unsigned __int64 timeResult = ((unsigned __int64)0xFFFFFFFF * dwWraps) + dwCurrent;
timeMutex.unlock();
return timeResult;
}
¿Anticipas ejecutar esto en sistemas con tiempo de actividad> 49.7 días? –
Sí. Definitivamente más. – Poni
¿Preguntas específicamente sobre Windows? Las plataformas de Posix tienen 'gettimeofday()', que puede abarcar varias décadas con una precisión de microsegundos. –