天天看點

qt定時器精度

定時器的精度取決于底層作業系統和硬體。絕大多數平台支援精度為1毫秒,盡管定時器的準确性在許多現實世界的情況下和這不相符。

準确性也取決于定時器類型(Qt::TimerType)。對于Qt::PreciseTimer來說,QTimer将試圖保持精确度在1毫秒。精确的定時器也從來不會比預計的還要早逾時。

對于Qt::CoarseTimer和Qt::VeryCoarseTimer類型,QTimer可能早于預期,在間隔之内被喚醒:Qt::CoarseTimer為間隔的5%,Qt::VeryCoarseTimer為500毫秒。

枚舉Qt::TimerType:

常量 描述
Qt::PreciseTimer 精确的定時器,盡量保持毫秒精度。
Qt::CoarseTimer 1 粗略的定時器,盡量保持精度在所需的時間間隔5%範圍内。
Qt::VeryCoarseTimer 2 很粗略的定時器,隻保留完整的第二精度。

在UNIX (包括: Linux、OS X、iOS)中,Qt将為Qt::PreciseTimer保持毫秒精度,對于Qt::CoarseTimer,間隔将調整到5%,使定時器與其他定時器比對或在差不多在同一時間,目标是讓大多數定時器在同一時間醒來,進而減少CPU喚醒和功耗。

在Windows上,Qt将為Qt::PreciseTimer使用Windows的多媒體定時器工具(如果可用),為Qt::CoarseTimer和Qt::VeryCoarseTimer使用正常的Windows定時器。

所有平台上,Qt::VeryCoarseTimer的間隔被四舍五入到最接近完整的第二位(例如:23500ms的時間間隔将被舍入到24000ms,20300ms舍入至20000)。