c - 在没有另一个线程的情况下定期运行代码
问题描述
这是我拥有的代码:
while(1)
{
if (fmod(get_elapsed_time(), 3.0) == 0.0)
{
printf("Hello World\n");
}
}
该get_elapsed_time
函数返回a double
,它是自程序启动以来经过的时间,以秒为单位,小数点后为毫秒。
所以这段代码应该每 3 秒打印一次 hello world,但它没有,我不知道为什么。
解决方案
浮点数不准确。跟踪您上次打印的时间,当当前时间 >= 3 秒时,是时候打印更多内容了。
就像是
float last_print_time = get_elapsed_time();
for(;;) {
float current_time = get_elapsed_time();
if (current_time - last_print_time >= 3.0) {
printf("Beep!\n");
last_print_time = current_time;
}
}
推荐阅读
- amazon-ec2 - 在 AWS EC2 上解聚散景服务器时 Websocket 连接失败
- python - 保存用户的输入以创建两个列表
- vue.js - 如何测试是否使用 Jest 调用了 Vue 方法?
- instagram - Insights Graph API-Follower_count 返回显示 2 天已过时
- javascript - 添加事件监听器防止正则表达式功能
- jsf - 设置值时转换错误“2021-07-07”为“空转换器”
- point-clouds - 有没有办法从点云中的所有面部关键点找到鼻尖?
- php - Firebase 通过 POST 请求向 Android 应用主题发送云消息 - Google Oauth Playground Access Token Expiration
- c# - 这是什么类型的显式?
- c++ - 在 C++ 中取消引用这个指针是否有效?