我想编写一个程序来运行一个初始值为 7 年的倒数计时器。计算机可以在两者之间重新启动。我可以想到基于文件的方法:
open file
if file_empty write initval = 7 years
while cpu_on
write timestamp to file
sleep for 1 sec
但是,我如何找到重新启动之间耗时? 1 秒内的准确性对我来说很好。假设代码用于一个独立的系统,比如一个航天器,它在没有永久网络连接的情况下长时间休眠。
最佳答案
找出当前系统时间并从中倒数计算倒数计时器的值似乎更容易。
例如,假设您想倒计时到 2021-05-09。计时器的值将始终是该时间与当前时间之间的差值。随着当前时间的增加,计时器将减少。
只要系统时钟准确,这将是准确的,它很可能在现代的网络连接系统上。它不依赖文件来保持状态,这看起来非常脆弱和笨重。如果没有其他方法可以找出当前的真实世界时间,那么您将无法处理重启。检查平台是否有某种形式的电池供电定时器,可以在主 CPU 重启后继续存在,这在嵌入式系统(和旧 PC)中很常见。
关于运行大型倒数计时器的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27123727/