Re: WaitForMultipleObjects() Question
"Ron H" <rnharsh@nospam.net> wrote in message
news:CLVIm.2988$ky1.1675@newsfe14.iad...
I have an app with several worker threads that deal with external hardware.
Each thread has several independent tasks that are triggered by an array of
events. I use CreateEvent() to define the events
withWaitForMultipleObjects() being the gate keeper. And of course event 0
is the shutdown task. At various points in the execution of the program, I
use SetEvent() to signal that I need one of the tasks to run. This is
pretty much straight out of Joe Newcomer's essays and it generally works
well. Once in a while an event is never acted upon and I believe that it is
because the thread gets bogged down and takes too long to complete a
task... ( just a guess)
Question: What is the life of an event? Is there a life timeout for a
signaled event? Is there a Queue for signaled events and if so how deep is
it?
Is there something I missed ( of course there is, but be gentle!)
I've built a few similar designs and have not seen such a problem. I
suspect you have a race or overlap condition. I.e., if you set an event that
is already set then only one event will be detected, not two. To avoid this
situation I generally prefer to make the threads message driven, since that
gives you a queue of signals to the thread.
--
Scott McPhillips [VC++ MVP]