То, что вы хотите сделать, это занятое ожидание , когда вы зацикливаетесь, пока не истечет определенное количество времени.Просто получите текущее время (используя таймер наивысшей точности из доступных) и выполните цикл до тех пор, пока текущее время не станет определенным периодом времени после запуска.
Вот конкретный пример использования API-интерфейса Windows и счетчика производительности с использованием двухсвязанные функции, QueryPerformanceCounter()
и QueryPerformanceFrequency()
.
void Sleep_spin(DWORD dwMilliseconds)
{
LARGE_INTEGER freq, target, current;
/* get the counts per second */
if (!QueryPerformanceFrequency(&freq)) { /* handle error */ }
/* set target to dwMilliseconds worth of counts */
target.QuadPart = freq.QuadPart * dwMilliseconds / 1000;
/* get the current count */
if (!QueryPerformanceCounter(¤t)) { /* handle error */ }
/* adjust target to get the ending count */
target.QuadPart += current.QuadPart;
/* loop until the count exceeds the target */
do
{
if (!QueryPerformanceCounter(¤t)) { /* handle error */ }
} while (current.QuadPart < target.QuadPart);
}
Используйте соответствующий API в вашем случае, что бы это ни было.