Функция сна намного меньше миллисекунды, может быть
Я обнаружил, что сон (0) работает на меня. В системе с почти 0% загрузкой процессора в диспетчере задач я написал простую консольную программу, и функция sleep (0) спала в течение 1-3 микросекунд, что намного меньше миллисекунды.
Но из приведенных выше ответов в этой теме я знаю, что количество снов сна (0) может значительно отличаться от этого в системах с большой загрузкой процессора.
Но, насколько я понимаю, функцию сна не следует использовать в качестве таймера. Его следует использовать, чтобы программа использовала как можно меньший процент от процессора и выполнялась как можно чаще. Для моих целей, таких как перемещение снаряда по экрану в видеоигре намного быстрее, чем один пиксель за миллисекунду, я думаю, что sleep (0) работает.
Вы просто должны убедиться, что интервал сна намного меньше, чем максимальное время, в течение которого он спит. Вы не используете сон в качестве таймера, а просто для того, чтобы игра использовала минимально возможное количество процессорных процентов. Вы бы использовали отдельную функцию, которая не имеет никакого отношения к сну, чтобы узнать, когда прошло определенное время, а затем переместили снаряд на один пиксель по экрану, например, в течение 1/10 миллисекунды или 100 микросекунд .
Псевдокод будет выглядеть примерно так.
while (timer1 < 100 microseconds) {
sleep(0);
}
if (timer2 >=100 microseconds) {
move projectile one pixel
}
//Rest of code in iteration here
Я знаю, что ответ может не работать для сложных вопросов или программ, но может работать для некоторых или многих программ.