Синхронизация таймера и потоков
От: Poseidon СССР  
Дата: 12.02.18 07:38
Оценка:
Имеется рабочий поток. Он запускает дочерний поток — обработчик прерываний от таймера.
В самом обработчике вижу 2 способа — ждать сигнала от таймера функцией WaitForMultipleObjects...
или ждать APC от таймера функцией SleepEx с параметром infinite. какой способ лучше?

Так как поток зависает неопределенно долго, то нужен способ его завершить при выходе из основного (порождающего) потока.
Постить ему АРС с _endthreadex() в обработчике или SetEvent дочернему потоку и ждать его окончания?
Может есть другие способы? кроме terminatethread конечно

Совместимость нужна на уровне ХР.
Re: Синхронизация таймера и потоков
От: Alexander G Украина  
Дата: 12.02.18 09:30
Оценка: 2 (1) +1
Здравствуйте, Poseidon, Вы писали:

P>Совместимость нужна на уровне ХР.


В XP уже есть thread pool, управляемый системой.

В частности, для таймера можно CreateTimerQueueTimer/DeleteTimerQueueTimer, для события RegisterWaitForSingleObject/UnregisterWaitEx.
Русский военный корабль идёт ко дну!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.