2013-06-24 9 views
-1

Я хочу, чтобы моя программа отображала случайное число в течение 10 секунд; Я могу сгенерировать число, но таймер не работает для меня !!Какую функцию использовать для ожидания?

Я попытался использовать этот код:

void MemoryGame::sleep(unsigned int mseconds) 
{ 
    clock_t goal = mseconds + clock(); 

    while (goal > clock()); 
} 

... 
sleep(500); 

не является clock() правильная функция здесь? Или я пропущу что-то еще?

+4

_ «не работает для меня» _ это не очень хорошее описание проблемы. Что именно об этом не работает? –

+1

Не совсем уверен, что вы пытаетесь сделать, но, может быть, 'sleep()' должен находиться внутри цикла while? – FeifanZ

+1

Вывод 'clock()' не должен быть в миллисекундах. Всегда используйте макрос 'CLOCKS_PER_SEC' при сравнении вывода' clock() 'в секундах. –

ответ

3

Каждая ОС, с которой я столкнулась, обеспечивает сон. Почему бы просто не использовать ОС для заданного количества миллисекунд? Ваш процессор будет благодарен вам за то, что он не сделал ничего занятого, ничего не делая.

+0

, используя os native, не занятый ожидание, разве это не то, что делает функция c sleep sleep? придерживайтесь языка и избегайте особых функций, если только вам это не нужно. –

+0

В C нет встроенной функции сна, если она не была добавлена ​​в C++ 11 (я действительно не смотрел библиотеки многопроцессорности). Сон, о котором вы говорите, вероятно, является POSIX, который недоступен в Windows. Там вы должны использовать Сон. – Joel

3

Если вы хотите спать в течение нескольких секунд (10?), POSIX предоставляет функцию sleep(unsigned int seconds). Чтобы спать с интервалом, заданным с использованием долей секунды, функция usleep предоставляет эту функциональность.

Функции находятся в #include <unistd.h>, а на большинстве ОС: s вы должны иметь возможность набирать, например. man 3 sleep, чтобы получить помощь.

На стороне Windows есть функция Sleep(DWORD milliseconds).

Не занят - подождите (например, while(t<t1);), если у вас нет особой необходимости.

+3

Даже системы реального времени обеспечивают вариант лучше, чем ожидание. – Joel

+1

Что, вероятно, показывает вам, что в последний раз, когда я делал что-то в реальном времени, я программировал роботы на PIC16C84 в университете :) Во всяком случае, обновил ответ. – Krumelur