zHz00 Untitled

пятница, 24 августа 2018
23:59 Между первой и второй перерывчик небольшой
В WinAPI есть функция SetTimer. Она получает в качестве аргумента время в миллисекундах. И через заданное число миллисекунд генерирует событие, которое можно обработать.

Уменьшаю время. Уменьшаю. А эффекта нет. Полез в документацию.

ОКАЗЫВАЕТСЯ, что у SetTimer есть минимальное время, равное 10 мс. Если задавать меньше, всё равно событие будет генерироваться каждые 10 мс. Да, в документации про это написано. Однако поведение очень неожиданное. Например у функции Sleep, которая просто приостанавливает выполнение программы на заданное время, таких ограничений нет.

Интересно, это ограничение родилось из времён, когда компьютеры были большими? Современные компьютеры и таймер в 1 мс спокойно обработают.

@темы: Программирование, Говнокод

URL
ЖЕЛАЮ СЧАСТЬЯ! ПРИШВИH.
Нужны красивые девушки, в любом стиле, можно аниме и прос...
Отпуск закончен - продолжаю работать. Вот думаю, взять ли...
ну нафиг мне такое надо? пошли, значит, вчера в "Стр...
вещи просто офигенные!..:-)
Покидали дома. Брали лишь необходимое. Безропотно повинов...

26.08.2018 в 15:55

26.08.2018 в 15:55
Скорее чтобы защитить от ошибок программиста. Ко всему прочему, WM_TIMER вообще неуклюжая штука на таких интервалах, он же lazy message - если есть другие сообщения в очереди, он не будет сгенерирован. У меня была ситуация, когда окно WM_SETCURSOR обрабатывало 25мс - в итоге пока мышь была в этом окне, ни один WM_TIMER не происходил нигде в приложении.
URL

27.08.2018 в 02:20

27.08.2018 в 02:20
himself, а есть ли в винде иной способ надёжной генерации событий через заданные промежутки времени? Хотя бы даже с надёжностью не по времени вызова -- ясно, что это недостижимо, так хотя бы с надёжностью по факту вызова!
URL

27.08.2018 в 11:23

27.08.2018 в 11:23
zHz00, отдельный поток c WaitForSingleObject(MY_INTERVAL)?
URL

29.08.2018 в 01:16

29.08.2018 в 01:16
himself, э-эх, всё-таки придётся отдельный поток пилить. Спасибо!
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail