170 похожих чатов

Товарищи. Как принудить винду спать через sleep_for в микросекундах? Прошу

спать 100 мкс, спит 15 милисекунд

20 ответов

42 просмотра

Ну у планировщика есть некая минимальная гранулярность, мб ты в нее уперся

Разрешение системного таймера ~15-16 миллисекунд. Уменьшить до ~1 миллисекунды можно timeBeginPeriod и timeEndPeriod. Но минимальное разрешение надо ещё через timeGetDevCaps узнавать. А ещё timeBeginPeriod по-разному работает на серверный и настольных версии windows. А если надо меньшее время, можно попробовать через busy wait цикл сделать и std::chrono::high_resolution_clock::now. Правда поток будет не спать, а впустую циклы процессора использовать.

S.E.- Автор вопроса
Дмитрий 🎮
Разрешение системного таймера ~15-16 миллисекунд. ...

Эээ... 15 милли?секунд ... ... Це ж трындец Так тогда другие потоки работать не смогут. Можно в целом через yield(или как он там пишется) их перешелкивать. Но ясно что таймер в винде - какой-то трындец

Будут офигительные истории, как линух спит микросекунды без глобальных настроек планировщика? А так - можно попробовать спать на high-res таймере

Запуск на десятке 20H2 или позднее?

S.E.- Автор вопроса
Dmitriy [Отпуск]
Будут офигительные истории, как линух спит микросе...

Ну... там он спит где-то 200 с чем-то мкс, что всяко лучше виндовых 15 мс.

S.E.- Автор вопроса
Aliaksandr Onishchuk
Запуск на десятке 20H2 или позднее?

не за компом уже. Не помню чтл за версия там стоит

S.E.
Ну... там он спит где-то 200 с чем-то мкс, что вся...

https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-createwaitabletimerexw См. флаги

S.E.
не за компом уже. Не помню чтл за версия там стоит

Ну, в любом случае - welcome to club https://randomascii.wordpress.com/2020/10/04/windows-timer-resolution-the-great-rule-change/

Dmitriy [Отпуск]
https://learn.microsoft.com/en-us/windows/win32/ap...

С помощью этого объекта можно сделать так, чтобы поток выполнялся ~нужное количество раз в секунду?

Дмитрий 🎮
С помощью этого объекта можно сделать так, чтобы п...

Необходимость так делать в юзерспейсе в целом похоже на архитектурную ошибку, но попробовать можно)

S.E.- Автор вопроса
Dmitriy [Отпуск]
Будут офигительные истории, как линух спит микросе...

О. А расскажите, между тем, как линуксовский планировщик разогнать

прочитать доку про sleep_for для начала

S.E.- Автор вопроса
Boris Usievich
прочитать доку про sleep_for для начала

Предлагаю перейти сразу к окончанию

Никак. По определению никак. 20 ms твой предел.

S.E.- Автор вопроса
S.E.
Выше пишут что как. И не 20мс а меньше.

Мне остается только сказать "Вперед с флагами и песнями и строем с речевками".

Viktor Chyzhdzenka
Никак. По определению никак. 20 ms твой предел.

ерунда. как по вашему игры работают? 😏 есть timeBeginPeriod до 1 ms, есть CreateWaitableTimer еще точнее

Boris Usievich
ерунда. как по вашему игры работают? 😏 есть timeBe...

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

Микросекунды никак - но вот сделать так чтобы точность таймера была ~1мс - можно.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта