информационная безопасность
без паники и всерьез
 подробно о проекте
Портрет посетителяВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Хакеры опять разморозили холодильники... 
 C3RB3R шифрует NAS Synology через... 
 Chainalysis раскрыла взлом собственных... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Круглински Д. "VC6" 2001 - c 197.; Рихтер Д. "Windows для профессионалов" - 1997 - c. 329 04.01.02 17:48  Число просмотров: 1249
Автор: LiNX Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Сообщение (обработчик) WM_TIMER одно, но у него параметр "индекс таймера" - с этой точки зрения таймер вообще один. Но реализуется в win32 таймер структурно - если ты запрашиваешь одну очередь таймера, то сразу формируется структура из десяти очередей (см выше), а следующая стуктура будет создана при запросе одиннадцатого таймера - с этой точки зрения таймеров десять. А поскольку параметр для запроса таймера 32 битный - то соответсвенно таймеров может быть создано 32 бита - и с этой точки зрения таймеров 32 бита. Все это разумеется не говорит о том, что всегда может быть создано даже две очереди - неоходимо проверять возвращаемое занчение
<programming>
А сколько может быть таймеров в NT,Win9x? 03.01.02 17:56  
Автор: y Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Везде в хелпах кричат что таймеры это ограниченный ресурс, но это все вроде для Win31? Ничего не нашел про сабж. Помогите пожайлуста.
А сколько может быть таймеров в NT,Win9x? 03.01.02 21:45  
Автор: LiNX Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1. Аппаратно 2 микросхемы по 3 канала (таймера), один канал и есть таймер (буквально), который дергает некоторое прерывание через определенный промежуток времени. (так в большинстве компьютеров, но есть компы, где десять (или более) таймеров - 2 микросхемы по 5 каналов - это промышленные компы)
2. В Win32 таймер это стандартное сообщение от ОС (а не обработка прерывания) с вытекающей отсюда блокировкой иных функций обработчиков-сообщений. Хотя сообщения таймера не ставятся в очередь, и если есть одно для данного таймера, то оно так и останется одним.
3. Схемы работы такова: ОС обрабатывает аппаратное прерывание от таймера, которое имеет достаточный приоритет (в силу сущности контроллера), чтобы тикать стабильно (но заткнуть при желании его можно) (допустим 18,2 раза в сек, хотя реально значение скорее всего иное), таймер (условно) будет тикать даже если систему подвесит какая-нибудь програ. ОС зарегистрировав ( SetTimer() ) таймер, посылает WM_TIMER с учетом запрошенного интервала (интервал в любом случае будет кратен 18,2 (или реальной частоте)), отсюда первый таймер обладает большим приоритетром чем остальные, а с учетом еще и приоритетов программ и того, что приоритет WM_TIMER ниже WN_PAINT (то есть окно сначала перерисуется и только потом получит WM_TIMER), получается, что серьезно страдает точность. В общем случае менее 100 милсек точность не обеспечивается.
4. Таймеры идентифицируются номером (целым числом), а поэтому можно просчитать, что таймеров у проги может быть 32 бита, но где-то слышал (не уверен), что реализуются таймеры в win32 через структуру по десять таймеров.
5. По идее даже 1 неправильно спрограммированный таймер заступорит прогу и систему (а NT и вовсе может похоронить с учетом ее приоритетной многозадачности), а если обработчиков будет больше, то соответсвенно ...
А сколько может быть таймеров в NT,Win9x? 04.01.02 10:13  
Автор: y Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо за ответ.
Собственно говоря, я имел в виду программные таймеры, которые создаются SetTimer(). Просто в старых описаниях говорится: проверяйте значение возврата а то в Win3.0 их может быть создано только 16 на всю систему. Я так и думал что в Win32 их может быть гораздо больше. А где написано, что если есть одно сообщение для таймера то оно одно и останется?
Круглински Д. "VC6" 2001 - c 197.; Рихтер Д. "Windows для профессионалов" - 1997 - c. 329 04.01.02 17:48  
Автор: LiNX Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Сообщение (обработчик) WM_TIMER одно, но у него параметр "индекс таймера" - с этой точки зрения таймер вообще один. Но реализуется в win32 таймер структурно - если ты запрашиваешь одну очередь таймера, то сразу формируется структура из десяти очередей (см выше), а следующая стуктура будет создана при запросе одиннадцатого таймера - с этой точки зрения таймеров десять. А поскольку параметр для запроса таймера 32 битный - то соответсвенно таймеров может быть создано 32 бита - и с этой точки зрения таймеров 32 бита. Все это разумеется не говорит о том, что всегда может быть создано даже две очереди - неоходимо проверять возвращаемое занчение
[Win32] А есть ли какой-нить выигрыш в исп. TimerProc вместо обработчика окна.? 09.01.02 08:29  
Автор: Xan Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Нет 09.01.02 20:42  
Автор: LiNX Статус: Незарегистрированный пользователь
<"чистая" ссылка>
По идее должно работать резвее, однако не слышал, чтобы об этом кто-нибудь рапортовал.
если короче... :) 03.01.02 23:04  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
дохрена их может быть
раньше память на структуры данных закончится

хотя есть опасение, что в 9х реально используются 16 бит
но я не уверен
1





Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach