Вы можете использовать QueryPerformanceCounter из WinAPI. Проверьте это до того, как запустится время, и запросите, прошло ли количество времени. Тем не менее, это таймер высокого разрешения. Для более низкого разрешения используйте GetTickCount (миллисекунды).
Все зависит от того, активно ли вы ждете (что-то делаете) или пассивно ожидаете внешнего процесса. Если последнее, то следующий код с использованием Sleep будет намного проще:
int count = 0;
while ( flag1 != flag2 && count < 700 )
{
Sleep( 10 ); // wait 10ms
++count;
}
Если вы не используете Sleep (или Yield) и ваше приложение постоянно проверяет состояние, то вы будете раздувать процессор, на котором работает приложение.
Если вы широко используете WinAPI, вам следует попробовать более нативное решение, читайте о функциях синхронизации WinAPI .