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

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

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

20 ответов

10 просмотров

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

Разрешение системного таймера ~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мс - можно.

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
кто шарит: mattermost отслеживает что ты на пк запускаешь?
Valentin
13
Помогите, пожалуйста, делаю программу для для подсчёта корней квадратного уравнения, знаю, что есть куча недочётов, недоработок, но основная проблема в том, что почему-то при ...
NYC
13
#include <stdio.h> int main(void) { int n; scanf("%d", &n); int digits1[n] = {0}; int digits2[n] = {0}; я не могу таким образом заранее массив нулями заполнить?
Linus
12
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
я про форму записи. смысл указывать что 8 байтный регистр 8 байт?
Aiwan \ (•◡•) / _bot
10
Вроде бы вопрос уже заезжанный, но тем не менее У меня есть функция menu() которая выводит набор возможных действий, а затем спрашивает у пользователя что он хотел бы сделать....
David Golovatin
5
Карта сайта