c - 我可以在 Windows 上用 C 创建多少个定时器?

标签 c windows timer arduino

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

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

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

最佳答案

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

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

然后设置一个循环计时器,每秒触发十次、二十次甚至更多次。

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

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

关于c - 我可以在 Windows 上用 C 创建多少个定时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51061992/

相关文章:

windows - 将结构体传递给 IDispatch 方法

multithreading - Delphi应用程序中的定期任务

c - 在另一个子进程写入文本文件时锁定文本文件

检查字符串中元音的出现

c - 二维数组 : Why ptr and *ptr are same when i declared ptr as int ptr[4][4];?

c - '*' 的类型参数无效(有 'double' )C

python - 如何使用 python 收集 GDI 和用户对象的性能指标

windows - Windows任务栏右键菜单 'Close window'如何响应

c# - 如何在一天中的特定时间运行 .net Core IHosted 服务?

c++ - 在公差范围内比较两次是否相等?