【发布时间】:2022-11-23 15:01:00
【问题描述】:
假设一个计时器每1秒执行一些不是 CPU 密集型的任务。
什么是资源重度计时器本身?
C#透视相关:How resource heavy is a Timer?
[注意:如果有人想从信号/插槽的角度回答问题,也已标记为qtimer。]
【问题讨论】:
标签: qtimer c++ performance qt timer qtimer
假设一个计时器每1秒执行一些不是 CPU 密集型的任务。
什么是资源重度计时器本身?
C#透视相关:How resource heavy is a Timer?
[注意:如果有人想从信号/插槽的角度回答问题,也已标记为qtimer。]
【问题讨论】:
标签: qtimer c++ performance qt timer qtimer
这取决于您的硬件、操作系统和用于实现定时器的库。
但通常在应用程序处理器上,计时器除了在等待列表中的一个条目和一个在硬件计时器触发之前被阻塞的线程之外,在计算上没有任何成本。如果你的定时器比你的硬件可以直接管理的多得多,那确实会变得很昂贵,所以你的操作系统必须维护一个定时器队列,以便在最后一个定时器被触发后做好准备。根据操作系统的设计,如果硬件定时器中断的处理发生在内核空间中,则可能还需要上下文切换。在 QT 的信号/槽架构的上下文中,可能还涉及另一层用于线程间通信的互斥锁,因此根据这些是否是上下文切换互斥锁实现的用户区,可以推断出另一个上下文切换成本。
这一切听起来很可怕,如果你每秒有 100000 个计时器的话。你有一个。这是非常少的。您甚至无法衡量这种开销,尤其是在具有 GUI 的上下文中。
【讨论】: