планировщик задач Windows имеет степень детализации, намного превышающую 1 мс (обычно 20 мс).Вы можете проверить это с помощью счетчика производительности, чтобы измерить время, действительно затраченное на функцию Sleep()
.(использование QueryPerformanceFrequency()
и QueryPerformanceCounter()
позволяет измерять время до наносекунды).обратите внимание, что Sleep(0)
переводит нить в спящий режим на кратчайший период времени.
однако вы можете изменить это поведение, используя timeBeginPeriod()
и передав период 1 мс.теперь Sleep(0)
должен возвращаться намного быстрее.
обратите внимание, что этот вызов функции был сделан для воспроизведения потоков мультимедиа с большей точностью.У меня никогда не было проблем с этим, но необходимость в таком быстром периоде встречается довольно редко.в зависимости от того, чего вы пытаетесь достичь, могут быть более эффективные способы получить требуемую точность, не прибегая к этому «хаку».