Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > время меньше секунды


Автор: OLG 26.1.2003, 00:59
Как приостановить выполнение программы на время меньше секунды?

Автор: Kefir 26.1.2003, 01:29
А разве sleep не пашет?

Автор: OLG 26.1.2003, 04:48
А где он?

Автор: Wowa 26.1.2003, 05:11
sleep(1000);

Автор: OLG 26.1.2003, 05:42
В смысле в каком заголовочном файле

Автор: Kefir 26.1.2003, 06:37
void Sleep - определён в winbase.h если не ошибаюсь. а вообще, на будущее - всё это написано в МСДН: http://msdn.microsoft.com
Очень удобная штука. adv/super.gif

Автор: Vaulter 26.1.2003, 09:58
tounge.gif все человечество ищет способы обработки инфы в реальном времени, а ему задержка нужна biggrin.gif biggrin.gif biggrin.gif biggrin.gif

Автор: OLG 26.1.2003, 19:18
А если под *nix?

Автор: neutrino 27.1.2003, 01:04
Цитата(OLG @ 26.1.2003, 18:18)
А если под *nix?

Toje sleep().

Автор: Step 27.1.2003, 21:01
Sleep
минимально 100 милисикунд

Автор: Baa 28.1.2003, 18:36
Можно использовать мультимедийные таймеры... их частота может быть до 1 мс.

Автор: Vit 29.1.2003, 00:22
Цитата(Step @ 27.1.2003, 12:01)
Sleep
минимально 100 милисикунд

Вроде бы минимально 10 мск

Автор: Vaulter 29.1.2003, 03:51
а еще можно использовать тики
еще меньше
хотя на разных машинах они разные

Автор: Step 29.1.2003, 19:21
Цитата
Вроде бы минимально 10 мск
нет только до 100 дает точное время, после уже оно плавает

Автор: stab 30.1.2003, 01:06
Все дело во времени переключения контекста (под Win обычно 20ms), т.е. нитка работает и через 20ms у нее забирается управление. Если был вызван Sleep(35) то нитка тут же отдает свое время ждущим и ставится в очередь на 35ms, а так как очередь проверяется каждые 20ms, то задержку в 35ms с помощью Sleep получить нельзя, задержка будет 40ms или 60, ..., 20 * n. Кроме того ниток же в системе куча и маленькие задержки могут не сработать вовремя даже если они кратны 20.

Автор: brb 30.1.2003, 08:43
vaulter
А где у Виндов живут тики? Как их достать? Почем один тик?

Автор: Vaulter 30.1.2003, 10:12
DWORD GetTickCount(VOID); - The return value is the number of milliseconds that have elapsed since the system was started.

BOOL GetSystemTimeAdjustment(
PDWORD lpTimeAdjustment, // size of time adjustment
PDWORD lpTimeIncrement, // time between adjustments
PBOOL lpTimeAdjustmentDisabled // disable option
); -взять разрешение системного таймера.
вот сосбвено и се =)

Автор: Fantasist 31.1.2003, 03:20
10 мкс у меня нормально пахались. Не ровно 10, конечно но где-то между 10-12 - это точно

Автор: Baa 31.1.2003, 17:30
Fantasist токо не мкс, а мс wink.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)