gpt4 book ai didi

language-agnostic - 编码器的 block : How to fire timer at intervals, 补偿早/晚触发

转载 作者:行者123 更新时间:2023-12-04 07:44:01 25 4
gpt4 key购买 nike

我遇到了一个愚蠢但严重的编码障碍案例。请帮助我解决这个问题,这样我的大脑就会停止受伤并拒绝回答我的问题。

我想每隔一段时间触发一个计时器,直到最后一次。比如t=0,我的目标是100,我的间隔是20,我想在0、20、40、60、80、100开火。

计时器不精确,可能提前或延迟触发。如果它在 22 点第一次触发,我想在 18 点再次触发。如果它在 19 点第一次触发,我想在 21 点触发。我只知道计时器触发的时间是当前时间、目标时间和触发间隔。我该怎么办?

编辑:抱歉,我并没有太具体地说明我究竟在问什么。我正在尝试弄清楚什么样的数学(可能涉及取某物的模数)需要完成以计算直到下一次发射的延迟。理想情况下,我还希望计时器与结束时间相匹配——因此,如果我最初在 47 点启动计时器,它会自行安排在 60 点而不是 67 点触发,因此最后一次触发仍将是 100。

最佳答案

如果您拥有的原始功能是“安排 X 在时间 T 触发一次”,那么处理 X 的过程应该知道它应该触发的时间 T0(不需要它实际触发的时间 T1 ) 以及所需的触发间隔 DT 并为时间 T0+DT 安排自身。如果原语是“从现在开始解雇 D”,那么它应该为 D = T0+DT-T1 安排时间(如果为负则它需要立即再次安排自己但记录安排的时间和“应该在”时间不同,因此它可以继续补偿后续的发射)。

有人已经提到 .NET 的 Timer 会为您做这件事; Python 的 sched stdlib 模块也是如此;所以,我敢肯定,还有许多其他语言/框架/库。但最后,如果需要,您可以在上面的任一单一调度原语(一个用于绝对时间或一个用于从现在开始的相对增量)之上构建它,只要您跟踪所需的以及实际的触发时间!_)

关于language-agnostic - 编码器的 block : How to fire timer at intervals, 补偿早/晚触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1498720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com