Функция сна в c в окнах. Существует ли функция с большей точностью? - PullRequest
3 голосов
/ 03 июня 2009

Мне было интересно, знает ли кто-нибудь о лучшей функции сна, которая могла бы использоваться в окнах в c, кроме Sleep (), которая принимает ввод в миллисекундах и гарантирует только то, что ввод - это минимальное количество времени, которое проходит. Я прохожу через 1 миллисекунду, но на самом деле получаю задержку 15-16 миллисекунд. Есть ли способ точно установить указанное время сна?

Ответы [ 4 ]

2 голосов
/ 03 июня 2009

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

1 голос
/ 04 июня 2009

Sleep только гарантирует, что ваш процесс не будет выполняться в течение как минимум n миллисекунд, но не будет, что он будет спать точно n миллисекунд , Может быть, вы хотите настроить таймер? Или занятое ожидание (т.е. опрос QueryPerformanceCounter в цикле).

Я бы старался избегать этого подхода (ожидание занято), если только вам это не нужно, но вы сжигаете циклы и не позволяете ЦП переводиться на более низкие тактовые частоты (т.е. время работы от батареи)

1 голос
/ 03 июня 2009
0 голосов
/ 03 июня 2009

Нет, в Windows нет лучшего режима сна, потому что миллисекунды - это уровень детализации. Если вы хотите поспать меньше времени, вам понадобится реализовать своего рода спин-блокировку.

...