Функция сна на c в Windows.Существует ли функция с большей точностью?

StackOverflow https://stackoverflow.com/questions/945320

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top