Я создаю приложение directx, которое полагается на системное время (потому что оно должно быть точным), , и мне нужно выполнять строки кода 60 раз в секунду в фоновом режиме (в потоке, созданном boost :: thread). это равно 60 FPS (кадр в секунду), но не зависит от базовой частоты кадров приложения.Коды запуска всего 60 раз в секунду
//.................
void frameThread()
{
// I want to run codes inside this loop for *exactly* 60 times in a second.
// In other words, every 16.67 (1000/60) milliseconds
for(;;)
{
DoWork();
//.........
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
initialize();
//.....stuffs
boost::thread framethread(frameThread);
//......
}
Есть ли способ сделать это?
Любой вид помощи был бы оценен :)
Знаете ли вы, что существует разница между ходом 60 раз в секунду и запуском каждые 1/60-й секунды :) – Axarydax
Если выполнение DoWork() должно быть равномерно распределено в течение 1 секунды? Может ли он выполняться 60 раз, скажем, в течение 0,5 секунд, а затем 0,5 секунды бездействия? – n0rd
он непрерывный, но он должен работать 60 раз в секунду. –