Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |
если короче... :) 03.01.02 23:04 Число просмотров: 948
Автор: ggg <ggg> Статус: Elderman
|
дохрена их может быть
раньше память на структуры данных закончится
хотя есть опасение, что в 9х реально используются 16 бит
но я не уверен
|
|
<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 бит
но я не уверен
|
|
|