C++ 如果某个函数运行时间较长(少于一个周期),我如何定期执行该函数
我想每秒运行一次函数,例如func()。但是,func()的运行时间约为500毫秒。我如何才能做到这一点?我知道如果函数的运行时间很短,我可以在每次执行后在func()和sleep()中编写一个while循环,持续1秒。但现在,运行时间很长。如何确保func()每秒运行1次?谢谢。你可以:C++ 如果某个函数运行时间较长(少于一个周期),我如何定期执行该函数,c++,C++,我想每秒运行一次函数,例如func()。但是,func()的运行时间约为500毫秒。我如何才能做到这一点?我知道如果函数的运行时间很短,我可以在每次执行后在func()和sleep()中编写一个while循环,持续1秒。但现在,运行时间很长。如何确保func()每秒运行1次?谢谢。你可以: 在开始时间中取当前时间 履行你的职责 在结束时间中取当前时间 等待(1秒+开始时间-结束时间) 这样,您可以每秒钟可靠地执行任务。如果任务花费较少的时间,您将等待更长的时间,反之亦然。但是请注意,这假设您的任
这取决于您需要的精度级别。如果您想要一个简单易懂的解决方案,您可以获取函数首次运行前的时间,并将其保存在某个变量(开始时间)中。创建存储下一个重复编号的重复索引计数变量(重复编号)。然后你可以这样做:
1) next_run_time = ++repeat_number*1sec + start_time;
2) func();
3) wait_time = next_run_time - current_time;
4) sleep(wait_time)
5) goto 1;
这种方法禁止在每次迭代中累积时间误差
但对于真正的应用程序,您应该找到一些事件框架或库。如果您想要一个简单、易于编码的解决方案,您可以获取函数首次运行之前的时间,并将其保存在某个变量(start\u time)中。创建存储下一个重复编号的重复索引计数变量(重复编号)。然后你可以这样做:
1) next_run_time = ++repeat_number*1sec + start_time;
2) func();
3) wait_time = next_run_time - current_time;
4) sleep(wait_time)
5) goto 1;
这种方法禁止在每次迭代中累积时间误差
但对于真正的应用程序,您应该找到一些事件框架或库。Windows或linux?你希望你的代码是可移植的吗?你可以使用定时器,但在windows上我推荐windows或linux?你希望你的代码是可移植的吗?您可以使用计时器,但在windows上我建议您使用,谢谢。你能给我更多关于整数同步的细节吗?谢谢,谢谢。你能给我更多关于整数同步的细节吗?谢谢,谢谢。我应该何时获取当前时间?当前时间是计算等待时间时的当前时间。=)我想我明白了。那么下一次运行时间是准确的时间,对吗?是的。下次运行时间始终是运行func()的“理想”计划时间。因此,在每次迭代中,您将与计划的时间同步。每个迭代错误都只是sleep()的系统错误和您编写一些代码来计算当前时间的时间。这个错误不会在每次迭代中累积,因为下一次运行时间并不依赖于每次迭代中的任何随机性。谢谢。我应该何时获取当前时间?当前时间是计算等待时间时的当前时间。=)我想我明白了。那么下一次运行时间是准确的时间,对吗?是的。下次运行时间始终是运行func()的“理想”计划时间。因此,在每次迭代中,您将与计划的时间同步。每个迭代错误都只是sleep()的系统错误和您编写一些代码来计算当前时间的时间。这个错误不会在每次迭代中累积,因为下一次运行时间并不依赖于每次迭代中的任何随机因素。