Re: Thread Checking the Queue data in an infinite loop



I disagree with Joe (above), and think that your proposal (using an event to
signal a thread that's WaitForSingleObject on the event) is just fine.


"prams" <pramodjoisb@xxxxxxxxx> wrote in message
news:2789ced5-ed23-48a8-822d-d85babd1aded@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hello,

I have a Thread which runs in a while(1) infinite loop checking for
any data in the Queue(normal STL::Queue) and if any data is there, it
retrieves and does some functionality with it. Now since it is an
infinite loop, continousy checking for data, CPU Utilization is almost
95-100% for my process. To Avoid that, I have tempororily put
Sleep(1). But I know this is not a good solution.

I want to replace it with this Solution. Please let me know if this is
correct.

1) I will create a Synchronization Object i.e an Event Object which
is an Autoreset Event Object.

2) The threads which write the data to the Queue (There are 2 threads
writing data to the queue simoultaneously..Queue writing is
synchronized with a mutex) will set the Event Object (Set the state to
signalled)

3) The Thread which reads the Queue data will do a WaitForSingleObject
waiting for the Event Object to be signalled. So it will be in a idle
state (waiting) if there is no data in the queue.
So I can avoid CPU Utilization(100%) problem.

Please let me know whether my solution is proper or should I have to
use seperate Event Objects.?

Rgds/;Pramod


.



Relevant Pages

  • Re: Thread Checking the Queue data in an infinite loop
    ... is an Autoreset Event Object. ... The threads which write the data to the Queue (There are 2 threads ... have to acquire the mutex. ... The reader would have to drain the queue each time it gets control. ...
    (microsoft.public.vc.mfc)
  • Re: Thread Checking the Queue data in an infinite loop
    ... regarding my Query. ... Others who commented on My solution using Event Object: ... Yes I want to drain the Queue once I compelete the wait..Since the ... Please let me know the proper way to solve this. ...
    (microsoft.public.vc.mfc)
  • Thread Checking the Queue data in an infinite loop
    ... infinite loop, continousy checking for data, CPU Utilization is almost ... is an Autoreset Event Object. ... The threads which write the data to the Queue (There are 2 threads ... state (waiting) if there is no data in the queue. ...
    (microsoft.public.vc.mfc)
  • Re: Thread Checking the Queue data in an infinite loop
    ... And an Event Object is completely wrong. ... A Semaphore is the only correct ... mutex to write to the queue, use a CRITICAL_SECTION instead, it is vastly more efficient. ... You also need to do WFMO so you can shut the thread down, also in my essay on semaphores. ...
    (microsoft.public.vc.mfc)
  • Re: Wait for the end of a thread
    ... You can generally assume that doing a WaitForSingleObject is a mistake. ... The "updateControls" call is what I use in a dialog-based app to update all the various ... Thus, you do not freeze the GUI, but you prevent launching another thread. ... I am trying to use an Event object (used by the app & the ...
    (microsoft.public.vc.mfc)