代码之家  ›  专栏  ›  技术社区  ›  Ahmed Al-haddad

我可以在Windows的C中创建多少个计时器?[关闭]

  •  -2
  • Ahmed Al-haddad  · 技术社区  · 7 年前

    我正在使用一个存储已接收消息条目的表(结构)。我需要定期监控每个条目的特定操作,这就是为什么我想为每个创建的条目创建一个计时器来监控这个条目在表中的时间长度,并且根据持续时间,我需要执行一些命令并重新启动计时器。

    我不熟悉C语言中的计时器和回调,但我知道每个计时器都会引出一个新的线程。我的问题是,我可以在标准板上创建多少个计时器?

    我知道另一种方法是为计时器操作添加一个新成员,并在表中迭代,以便在非关键事件中使用一个计时器,但我正在尝试避免这种情况,因为表条目可能影响整个程序。如果不能创建许多计时器(+1000),那么另一种理想的方法是什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Some programmer dude    7 年前

    如果表中的条目在某些时间应该“过期”(并删除),那么这里有一个可能的解决方案,只使用 单一的 计时器:

    首先使用 优先级队列 其中“优先级”是到期时间。当然,您可以使用任何其他类似于表的结构,但要根据过期时间对其进行排序(稍后会简化这些操作)。

    然后有一个循环计时器,它每秒触发十次、二十次或更多次。

    当计时器被触发时,您将得到当前时间,并简单地删除表中过期时间已过的所有元素(将其过期时间与当前时间进行比较)。如果表是按过期日期排序的,那么这是一个非常简单的循环,您可以在其中比较“top”元素的时间,如果过期了,则“pop”top元素。

    您可以使用相同或类似的技术 任何 与时间有关的问题。