|
Subject:
|
Alternative for while loop in thraeds
|
|
Posted By:
|
lmadhavi
|
Post Date:
|
9/25/2004 7:04:03 AM
|
Hello,
I am new to Mulithreading. In my project I am working with multiple threads. Since I haven’t worked with threads before, I am facing many problems. Can anyone please guide me or give some hints.
I am explaining in brief about the threads used by me in my project.
1st thread: Filter Thread
Is started at application start up. Filters each line read from file( Log data is read from file) I have used CCriticalSection and CSingleLock to lock the data access here as this LIST is accessed in Display thread. Adds the data to the LIST from top. This thread has to run continuously till the application end.
2nd threadisplay Thread Is started at application start up. Displays each line filtered by Filter thread I have used CCriticalSection and CSingleLock to lock the data access here as this LIST is accessed in Filter thread. Retrieves the data from the LIST from bottom. Deletes the data from the list after display. This thread has to run continuously till the application end.
3rd Thread: Monitor Thread Is started at application start up. This thread has to continuously check if new records are added to the file ( Here another external application will add records to the file) If new records are added, it notifies the Filter Thread, which fetches the added records, filters them and gives to Display thread for displaying.
Since all the above three threads have to run continuously, I had used sleep in all the threads as shown below.
UINT ThreadFunction(LPVOID lp) { while(TRUE) {
// Do the work } }
The result of this is that CPU time is 100% used because of the While loop. Can any one please suggest an alternative for while loop in the other two threads.
Thanks Madhavi
|
|
Reply By:
|
harshaperla
|
Reply Date:
|
9/29/2004 6:22:10 AM
|
Hello u can use timer for that. in the startup, set a timer using
SetTimer( 2, 100, NULL); where 2 is the id for timer, then for every 100 millisecond, handler funtion will be called. then, go 2 class wizard and add messagehandler WM_TIMER. function OnTimer(idEvent ) will be added 2 the function. write the code as u want. u can change time as u want instead of 100 ms.
HarshaPerla http://eharsha.tk
|