Автор
|
Тема: Какими таймерами народ пользуется
|
Valery |
опубликован 10-01-2002 11:04 MSK
Вот это собственно и интересно применительно к потокам (не окнам). Посмотрел в Platform SDK: DLLs, Processes, and Threads Synchronization Functions, вот для себя чего надыбал: Waitable Timer Functions CancelWaitableTimer CreateWaitableTimer OpenWaitableTimer SetWaitableTimer Остается, чтобы они еще и заработали :) Есть еще, что мне приглянулось из другого топика: Timer-Queue Timer Functions ChangeTimerQueueTimer CreateTimerQueue CreateTimerQueueTimer DeleteTimerQueue DeleteTimerQueueEx DeleteTimerQueueTimer С ними еще смешней - про них ни один инклуд не знает, так где они? Или даже так поставим вопрос - а чем же все-таки народ пользуется, если надо по таймеру постоянно чего-то делать? Просто создать поток с вечным циклом while(1){Sleep(period); do_something(); } получается, конечно, но уж очено некузяво. Не дайте погибнуть в невежестве.
|
ADK
|
опубликован 10-01-2002 11:46 MSK
Смотри winbase.h#if (_WIN32_WINNT >= 0x0400) |
Valery
|
опубликован 10-01-2002 11:48 MSK
так я уже ее в проекте определил, эту константу, какого рожна ей еще надо? |
Valery
|
опубликован 10-01-2002 11:52 MSK
я про функции работы с таймером написал, что они не работают, т.е. компилятся запускаются, хэндл создается, а вот колбэк не вызывается, вот в чем проблема. Да речь шла о паре функций: CreateWaitableTimer SetWaitableTimer |
Yuriy
|
опубликован 10-01-2002 12:41 MSK
> так я уже ее в проекте определил, эту > константу, какого рожна ей еще надо?#define _WIN32_WINNT 0x500 /* Необходимо определять только ПЕРЕД windows.h - во всяком случае, это везде пишут и это работает. */ #include "windows.h" |
Valery
|
опубликован 10-01-2002 13:15 MSK
так если я ее определил в проекте, то она всяко будет определена перед windows.h. мужики еще раз поясняю - компилится у меня все нормально, не срабатывает колбэк. |
ADK
|
опубликован 10-01-2002 14:15 MSK
Х.З., всегда WM_TIMER пользуюсь и доволен. |
Valery
|
опубликован 10-01-2002 14:28 MSK
насколько я понимаю, оно работает с функцией обработки сообщений, так нет ее у меня. именно с потоками надо, не с окнами. как?
|
zAg
|
опубликован 11-01-2002 22:07 MSK
>не срабатывает колбэк а ты поток переводишь в alertable state? (Sleep,SleepEx,WaitForSingleObject и тд) иначе работать не будет! А вообще срабатывание waitable таймера по-моему лучше всего отлавливать с помощью WaitForSingleObject в отдельном потоке.ps. Все это подробно расписано у Рихтера
|
Valery
|
опубликован 11-01-2002 23:02 MSK
2zAg: нет, я думал это запустится и так, попробую почитать MSDN поподробнее, видимо упустил. Рихтера у меня нет. Спасибо. |