我正在创建一个依赖系统时间(因为它必须准确)的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 2010-03-25 09:05:08
DoWork()执行是否应该在1秒内平均分配?可以执行60次,例如0.5秒内,然后是0.5秒怠速? – n0rd 2010-03-25 09:05:28
它是连续的,但它应该每秒运行60次。 – 2010-03-25 09:21:01