Zamanlama fonksiyonları arasında, time
, clock
getrusage
, clock_gettime
, gettimeofday
ve timespec_get
, onlar nasıl uygulandığını açıkça anlamak istiyorum ve hangi durumlarda bunları kullanmak zorunda bilmek için onların dönüş değerleri nelerdir.
Öncelikle, duvar saati değerlerini döndüren işlevleri, süreç veya iş parçacığı değerlerini döndüren işlevlerle karşılaştırmalıyız . kendisine geçirilen parametreye göre duvar gettimeofday
saati değerini clock_gettime
döndürür, duvar saati değerini veya işlem veya iş parçacığı değerlerini döndürür Clock
. getrusage
ve clock
süreç değerlerini döndürür.
Daha sonra ikinci soru, bu işlevlerin uygulanması ve sonuç olarak bunların doğruluğu ile ilgilidir. Bu işlevler hangi donanım veya yazılım mekanizmasını kullanır.
Görünüşe göre getrusage
sadece çekirdek onayını kullanıyor (genellikle 1ms uzunluğunda) ve sonuç olarak ms'den daha doğru olamaz. Doğru mu? Daha sonra getimeofday
işlev, mevcut en doğru temel donanımı kullanıyor gibi görünüyor. Sonuç olarak, son donanımda doğruluğu genellikle mikrosaniyedir (API nedeniyle daha fazla olamaz). Peki ya clock
, man sayfası "yaklaşım" hakkında konuşuyor, bu ne anlama geliyor? Peki ya clock_gettime
API nanosaniye cinsinden, temelde yatan donanım buna izin veriyorsa bu kadar doğru olabileceği anlamına mı geliyor? Ya monotonluk?
Başka işlevler var mı?
clock_gettime
, dolayısıyla kullanımıgettimeofday()
daha çok yönlü bir Littleclock_gettime()