void Wait(double Duration)
{
clock_t End;
End = clock() + (Duration*CLOCKS_PER_SEC);
while (clock() < End)
{
// This loop just stalls the program.
}
}
Моя функция работает отлично в полтора раза, но иногда она задерживает программу до ее даже вызова. Возьмем, например, следующий фрагмент кода:Почему этот выход ждет чего-то после него?
cout << "This is\n";
Wait(2.5)
cout << "a test!";
Вы бы ожидать, что первая строка появится сразу, а вторая линия появится через 2,5 секунды, но иногда все появляется через 2,5 секунды. В чем дело?
Существует почти наверняка лучший способ сделать то, что вы действительно хотите сделать. Сообщите нам свою платформу/компилятор, и мы можем дать лучший совет. –
Это происходит только для вас с помощью cout? Имейте в виду, что он буферизирован. Поэтому, если вы не флеш, я думаю, вы можете получить поведение, которое вы испытываете. – Bart
Я не уверен, что это правильно, но возможно ли, что компилятор оптимизирует цикл, поскольку он ничего не делает? См. Этот вопрос: http://stackoverflow.com/questions/3592557/optimizing-away-a-while1-in-c0x – AshleysBrain