Добрый день! Иногда sleep(1) стабильно работает 15.5мс, иногда ~1.5мс. Понятно, что это связано с системным Timer Resolution. Причем в последних сборках это не глобальная настройка, менять надо из самого процесса https://habr.com/ru/post/522212/ Значит вы как-то переключаетесь в квике между частотами.с помощью ф-ции NtSetTimerResolution Как нам этим управлять и получать желаемую частоту? Видимо нужна еще одна сервисная ф-ция. Все же поведение sleep(1) должно быть более предсказуемым, чем разброс на порядок на незагруженной системе.
скорее всего, вы используете какую-то стороннюю lua-библиотеку, которая инициализирует mm-таймер для данного процесса. и он остается до тех пор, пока не перезапустите квик. не обязательно это делается напрямую, может быть связано, например, с проигрыванием аудио.
rst9 написал: скорее всего, вы используете какую-то стороннюю lua-библиотеку, которая инициализирует mm-таймер для данного процесса. и он остается до тех пор, пока не перезапустите квик. не обязательно это делается напрямую, может быть связано, например, с проигрыванием аудио.
О, действительно. После вызова w32.mciSendString sleep(1) работает 1.97мс.. Что ж, тогда вопрос разработчикам, может стоить сделать этот механизм штатно управляемым? Штатно значит всегда работает не менее 15.6мс..
Андрей написал: Что ж, тогда вопрос разработчикам, может стоить сделать этот механизм штатно управляемым? Штатно значит всегда работает не менее 15.6мс..
Как Вы верно подметили Вы сами уже сейчас можете поменять таймер через WinAPI.