Gettimeofday() mikrosaniye çözünürlük garantisi?
Aslında win 32 API için yazılmış bir oyun,, Linux (OS X win 32 port Linux taşıma) taşıma kendimi buluyorum. İşlemi başlatmak beri uSeconds vererek QueryPerformanceCounter
uyguluyorum:
BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount)
{
gettimeofday(¤tTimeVal, NULL);
performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec);
performanceCount->QuadPart *= (1000 * 1000);
performanceCount->QuadPart = (currentTimeVal.tv_usec - startTimeVal.tv_usec);
return true;
}
Bu, QueryPerformanceFrequency()
frekans olarak sürekli 1000000 verilmesi ile birleştiğinde, iyi çalışıyorbenim makinedebana programın başından beri uSeconds
içeren 64 bitlik bir değişken vererek. Bu yüzdenbu taşınabilir mi?Eğer çekirdek, belirli bir yol ya da buna benzer bir şey derlendi farklı çalışır keşfetmek istemiyorum. Bu iyi bir şey Linux dışında olmayan taşınabilir olması, ancak duyuyorum.
CEVAP
Belki. Ama daha büyük sorunların var. gettimeofday()
zamanlayıcı (yani, ntpd değiştiren sistem süreçleri eğer orada yanlış zamanlara neden olabilir. Bir "" linux olsa da, gettimeofday()
çözünürlük 10us. sanırım normal İleri ve geri ve zaman, sonuç olarak, süreçleri sistem üzerinde çalışan temel atlama olabilir. Bu etkili bir şekilde sorunuza hayır cevabını yapar.
Zamanlama aralıkları için clock_gettime(CLOCK_MONOTONIC)
içine bakmak gerekir. Birkaç daha az sorunları çok çekirdekli sistemler ve harici saat ayarları gibi şeyler nedeniyle muzdarip.
Ayrıca, clock_getres()
işlevi içine bak.
Yüksek çözünürlük ile görüntü PDF dönü...
PHP DateTime her zaman 0 değerini dönd...
Neden .NET zamanlayıcılar 15 ms çözünü...
Mikrosaniye almak için Python strftime...
Maven diyor&; çözünürlük Kod: güncelle...