#include <chrono>
#include <iostream>
#include <unistd.h>
#include <atomic>
#include <thread>
void sendHeartPack();
std::atomic<bool> mcuStatus(true); //条件
int main()
{
std::thread{sendHeartPack}.detach() ;
while(1){}
return 0;
}
void sendHeartPack()
{
auto timer = std::chrono::high_resolution_clock::now();
for(;;)
{
while(!mcuStatus)
{
std::this_thread::yield();
}
auto t_a = std::chrono::high_resolution_clock::now();
int sumTime = std::chrono::duration_cast<std::chrono::milliseconds>( t_a - timer ).count();
//high_resolution_clock高精度计时器 偏差较小
if( abs(sumTime) >= 300 )
{
//do somethings
//update Time
timer = std::chrono::high_resolution_clock::now();
}
//睡眠100MS
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
return;
}
C++写一个定时器,记录下代码。