In Windows 7 su processori di generazione corrente, questo è un timer affidabile ad alta precisione (nanosecondo) all'interno della CPU (HPET).
In versioni precedenti e su generazioni precedenti di processori, è "qualcosa", che può significare praticamente qualsiasi cosa. Più comunemente, è il valore restituito dall'istruzione RDTSC (o un equivalente, su non x86), che può essere o meno affidabile e indipendente dall'orologio. Nota che RDTSC (in origine, per definizione, ma non più ora) non misura il tempo , misura cicli.
Nelle CPU attuali-and-precedente generazione, RDTSC solito è affidabile e orologio indipendente (cioè è ora veramente tempo di misura), sulla pre generazione -precedente, specialmente sul mobile o qualche multi-CPU le piattaforme non lo sono. Il "timer" può accelerare e decelerare, e persino essere diverso su diverse CPU, causando "viaggi nel tempo".
Edit: Il constant tsc
bandiera nella CPUID (0x80000007) può essere utilizzato per dire se RDTSC è affidabile o meno (anche se questo in realtà non risolve il problema, perché che cosa fare se non lo è, se c'è senza alternative...).
Su sistemi ancora più vecchi (come 8-10 anni), è possibile utilizzare altri timer per QueryPerformanceCounter. Quelli possono non avere affatto un'alta risoluzione, né essere terribilmente accurati.
Rif .: "Si noti che RDTSC non misura il tempo, misura i cicli.", È importante notare che è possibile calcolare il tempo in secondi direttamente come "freq * tick". – Polynomial
@Polynomial: no, non è possibile, perché freq! = Const. Su praticamente tutti i sistemi oggi (e la maggior parte dei sistemi nell'ultima decade) la frequenza viene scalata dinamicamente per risparmiare energia. – Damon
Interessante. Qual è l'alternativa? – Polynomial