powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создаёт TTimer свой поток или нет?
15 сообщений из 40, страница 2 из 2
Создаёт TTimer свой поток или нет?
    #40082949
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
wadman
При создании таймера создается окно,
Корректнее будет фраза: "При создании объекта TTimer создается окно". Потому что при вызове SetTimer окно уже должно существовать. А что это за окно - системе все равно

Это просто TTimer так сделан, что на каждый тамер свое отдельное окно. Возможно, так сделано, чтобы не заботиться об уникальности id таймера.
Интересно, что в самой процере SetTimer() можно не указывать дескриптор окна, но приэтом задать процедуру таймера. При этом, WM_TIMER будет обработан процедурой окна по умолчанию путем вызова этой процедуры таймера, то есть, нужно как-то дернуть диспетчеризацию сообщений текущего треда, чтобы процедура выстрелила, ну и, WM_TIMER таки должен быть отправлен из текущего треда. :)
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40082964
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
можно не указывать дескриптор окна
Кстати, да.
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40082971
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky
Но все равно, должен существовать некий сторонний поток, который флаг "timer X сработал" установит. Только оповещение основного потока о событии переместилось на чуть более ранний шаг.


Этот "сторонник поток" называется "ядро" (либо "планировщик", либо "диспетчер ядра", либо "диспетчер"), кому как нравится.
Когда речь идёт про контроль прошедшего времени, диспетчер ядра пробуждается каждый раз при срабатывании системного таймера и анализирует, кому какое событие нужно отправить (или установить флаг). В данном случае после установки флага диспетчер всё равно прервёт ожидание программы, которая висит на вызове PeekMessage в ожидании какого-нибудь события.
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40082979
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Корректнее будет фраза: "При создании объекта TTimer создается окно".

Уточнять можно бесконечно долго, если не замечать сути беседы: не смотреть на название темы, не учитывать текст из цитаты и т.п.
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083000
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во развели тут дискуссию! Окна, трэды. Таймер может и без окна работать. Дергать callback. Установите разрешение таймера в 0 мс и замерьте время срабатывания. Тогда будет понятно, что срабатывание таймера происходит при смене контекста ОСью.
ОСь при планировании пробуждает в очередной раз поток.
А есть ли у тебя таймеры? Есть.
Время вышло? Вышло.
Что у нас там: окно задано или колбэк?
Окно - отправляем WM_TIMER
Колбэк - передаем ему управление.
Всё просто. Никакой магии.
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083001
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.07.2021 13:45, Barmaley57 пишет:
> Всё просто. Никакой магии.

Ухнаагийн Хурэлсух!

зы: новый президент Монголии
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083002
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barmaley57
Колбэк - передаем ему управление.

Да шиш там. Все также WM_TIMER, только не туда.
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083007
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57Тогда будет понятно, что срабатывание таймера происходит при смене контекста ОСью.

То есть ты утверждаешь, что квант времени в Windows 18.5 миллисекунд, поскольку именно
таков квант таймера... Ню-ню...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083009
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Barmaley57
Колбэк - передаем ему управление.

Да шиш там. Все также WM_TIMER, только не туда.
Неважно. Важен смысл.
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083011
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Barmaley57Тогда будет понятно, что срабатывание таймера происходит при смене контекста ОСью.

То есть ты утверждаешь, что квант времени в Windows 18.5 миллисекунд, поскольку именно
таков квант таймера... Ню-ню...
Я не могу ничего сказать насчет того, как работает твой мозг. И почему в нем генерируются такие мысли. Увы.
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083013
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barmaley57
ъъъъъ
пропущено...

Да шиш там. Все также WM_TIMER, только не туда.
Неважно. Важен смысл.

Вот именно.
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083018
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57Я не могу ничего сказать насчет того, как работает твой мозг. И почему в нем генерируются
такие мысли.

Очевидно это потому, что ты нуб и не знаешь, что таймер в Windows ограничен вышеназванным
периодом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083024
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, пшолнах (с)
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083036
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, начнём с вопроса попроще: есть ли вообще хоть какое-то основание подозревать ядро в
участии в работе пользовательских таймеров?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создаёт TTimer свой поток или нет?
    #40083047
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот не поленился, посмотрел. Да, SetTimer - ставит пользовательский таймер. Обработка происходит либо в связке Get/Peek/message+DispatchMessage, либо вместо dispatch обрабатываем ручками WM_TIMER. Нет очереди - не работает таймер. В ядро уходит SetWaitableTimer. Но темы порождения/непорождения потоков это не меняет.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Создаёт TTimer свой поток или нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]