QElapsedTimer实际上是否创建了一个计时器?

时间:2014-02-25 20:05:23

标签: qt timer qt5

QTimer似乎实际上创建了一个消耗CPU滴答和发布事件等的“计时器”。QElapsedTimer也是如此吗?

或者这就像win32的GetTickCount那样当你在QElapsedTimer上调用一个方法时,它会抓取当前的滴答计数并从计数开始时减去它?

我想知道让这些东西闲逛是不是一个好主意,或者他们会吃QTimer这样的电池吗?

1 个答案:

答案 0 :(得分:2)

QTimer只会在某些情况下“吃掉”电池。具体来说,如果它是Windows 7及更早版本的Qt::PreciseTimer - 在这些系统上,它会将滴答频率提高到1000Hz。非常短的计时器将强制执行相同的行为。由于这些系统无空闲,因此有效粗略定时器的存在对功耗没有任何影响,因为无论是否需要,系统都以固定速率进行滴答。

在无人操作的操作系统上,QTimer没有这种不良影响。这包括OS X / xnu,Windows 8或无滴答Linux。

QElapsedTimer不是QObject,也不提供任何异步事件。它只是提供了平台时间API的接口(不是计时器API)。