C/C++中如何稳定地每隔5ms执行某个函数?
2023-04-21 阅读 174
在C/C++中,可以使用定时器来实现每隔一定时间执行某个函数的功能。以下是一个简单的实现方式:
1. 使用``库中的`std::chrono::steady_clock`来获取当前时间;
2. 在程序启动时记录一个起始时间点;
3. 每隔5ms获取一次当前时间,计算与起始时间点的时间差;
4. 如果时间差大于等于5ms,则执行相应的函数,并更新起始时间点。
以下是一个示例代码:
```c++
#include
#include
#include
using namespace std::chrono_literals;
void myFunction() {
std::cout << "Function called at " << std::chrono::steady_clock::now().time_since_epoch().count() << std::endl;
}
int main() {
auto startTime = std::chrono::steady_clock::now();
while (true) {
auto currentTime = std::chrono::steady_clock::now();
auto elapsedTime = std::chrono::duration_cast(currentTime - startTime);
if (elapsedTime >= 5ms) {
myFunction();
startTime = currentTime;
}
// 等待一段时间
std::this_thread::sleep_for(1ms);
}
return 0;
}
```
在上述代码中,`std::this_thread::sleep_for(1ms)`可以控制每次循环的时间间隔,避免程序过于占用CPU资源。
更新于 2023年04月24日