| Koнтpoлы | - MMTimer |
MMTimer
Краткое описание
Элемент предназначен для генерирования событий через определенный промежуток времени независимо от оконного обработчика
Параметры
События
Свойства
Примеры
Пример демонстрирует сравнение производительности таймеров при одинаковых интервалах.
Add(MainForm,2953706,21,105)
{
Width=231
Height=129
Caption="Timers"
}
Add(Timer,4058809,182,70)
{
Interval=1
link(onTimer,14308985:doNext,[])
}
Add(MMTimer,10697638,182,119)
{
Interval=1
link(onTimer,15271490:doNext,[])
}
Add(Timer,16268523,182,182)
{
link(onTimer,7109610:doEvent1,[])
}
Add(Counter,14308985,280,70)
{
Max=2000
}
Add(Counter,15271490,294,119)
{
Max=2000
}
Add(Label,4814149,378,182)
{
Left=113
Top=27
Width=10
Height=17
Caption="0"
}
Add(Label,4780216,378,231)
{
Left=113
Top=54
Width=10
Height=17
Caption="0"
}
Add(Hub,7109610,231,182)
{
OutCount=4
link(onEvent1,16690602:doData,[])
link(onEvent2,2430780:doData,[(260,195)(260,237)])
link(onEvent3,14308985:doReset,[(254,202)(254,90)])
link(onEvent4,15271490:doReset,[(268,209)(268,139)])
}
Add(DoData,16690602,280,182)
{
link(onEventData,4814149:doText,[])
link(Data,14308985:Count,[])
}
Add(DoData,2430780,294,231)
{
link(onEventData,4780216:doText,[])
link(Data,15271490:Count,[])
}
Add(Label,2861881,427,182)
{
Left=55
Top=27
Width=30
Height=17
Caption="Timer"
}
Add(Label,15709153,427,231)
{
Left=48
Top=54
Width=48
Height=17
Caption="MMTimer"
}
Замечания
Основное отличие данного элемента от аналогичного ему - Timer - состоит в способе генерации события onTimer. Обычный Timer работает через стандартные оконные сообщения Windows синхронно с основным потоком приложения и не может генерировать события чаще чем каждые 16-20мс. Очевидно так же, что в случае занятости основного процесса сообщения от таймера начнут накапливаться в очереди и будут обработаны програмой в тот момент, когда это станет возможно(т.е. основной процесс вернется в состояние простоя). Элемент MMTimer не использует стандартную очередь сообщений, а полностью построен на потоке (Thread), вследствии чего работает параллельно основному процессу и способен генерировать события onTimer через честные 1мс. Поскольку вся схема, стоящая после onTimer выполняется в отдельном потоке, то для нее характерны все особенности работы, описанные в замечаниях к элементу Thread в разделе Система.
Обновление элемента: [svn]MMTimer.pas[/svn]
Обновление элемента: [svn]MMTimer.pas[/svn]
BB-code статьи для вставки
Всего комментариев: 0
(комментарии к статье еще не добавлены)