Я работал по курсу CS106B из Стэнфорда, и, выполняя задание Boggle, я заметил, что функция Sleep () в Windows ведет себя иначе, чем функция Pause ().В целях тестирования я просто настроил плату и использовал предоставленный файл gboggle.h, чтобы выделить кубы Boggle, а затем убрать выделение.Ниже приведен соответствующий код:
for(int row = 0; row < board.numRows(); row++)
{
for(int col = 0; col < board.numCols(); col++)
{
HighlightCube(row, col, true);
}
}
Pause(0.5);
for(int row = 0; row < board.numRows(); row++)
{
for(int col = 0; col < board.numCols(); col++)
{
HighlightCube(row, col, false);
}
}
Если я использую Pause (), кубики подсвечиваются, а затем возвращаются в нормальное состояние.Если я использую Sleep () или Wait (), кубы никогда не подсвечиваются, и задержка в программе происходит еще до того, как доска нарисована, а не между циклами for.Соответствующая функция Wait ():
void wait ( int seconds )
{
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC ;
while (clock() < endwait) {}
}
взята из здесь .Я использую Visual Studio 2005 в Windows XP.
Какая разница между этими функциями заставляет их действовать таким образом?
Редактировать: Мне известно, что для сна и ожидания требуются целые числа.Я проверил их, используя целые числа, и вижу задержку, но это происходит до того, как будут написаны квадраты.Извините, что раньше я не понимал этого.
Edit2: просмотрев некоторые другие библиотеки, которые я использовал, я обнаружил, что Pause, фактически, является частью графической библиотеки, которая просто приостанавливает графический буфер.