我的项目有一个不同的线程来制作一些东西。
一切都好,但我希望有一些函数每 20 毫秒调用一次(例如),但考虑到该函数花费的时间...我尝试更好地解释...我调用该函数,该函数花费了 6 毫秒退出,所以我希望线程 sleep 14 毫秒(20 - 6),下次调用时,该函数花费 12 毫秒,所以 sleep 将只有 8 毫秒.... 我怎样才能做到这一点? 这是我的代码:
// thread constructor
DWORD dwThreadId, dwThrdParam = 1;
HANDLE thread = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)workerFunc, &dwThrdParam, 0, &dwThreadId );
// thread function
DWORD WINAPI workerFunc( LPDWORD lpdwParam )
{
while( true )
{
myFunction( );
Sleep( ??? );
}
return 0;
}
谢谢!
最佳答案
这个怎么样:
clock_t start, end;
while( true )
{
start = clock();
myFunction( );
end = clock();
Sleep(20-(end-start)*CLOCKS_PER_SEC/1000.0);
}
关于C++ 使用线程作为定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6732238/