Функция выполняющаяся через определенный промежуток времени
Нужно сделать функцию которая будет выполняться ровно каждые 0.002 секунды или каждую мс. Как это можно сделать чтобы при этом работало на всех платформах?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну, можно попробовать что-то вроде
void func0002()
{
m.lock();
++counter;
cout << counter << "\r";
m.unlock();
}
int main()
{
auto sx = std::chrono::high_resolution_clock::now();
for(;;)
{
this_thread::sleep_until(sx+=2ms);
thread t(func0002);
t.detach();
}
}
но гарантии точности все равно никто не даст...
Ну, или если программа больше ничего не должна делать -
int counter;
void func0002()
{
++counter;
cout << counter << "\r";
}
int main()
{
auto sx = std::chrono::high_resolution_clock::now();
for(;;)
{
this_thread::sleep_until(sx+=2ms);
func0002();
}
}