I'm not sure if this is what *should* happen or there is a problem with the code, but the result is CPU Utilization for the app being 100%.

Basically, the application uses overlapped serial COMM I/O and three threads for Rx, Tx, and Events. These three threads, do not cause any problems for CPU utilization as they implement WaitForMultipleObjects(), etc.

Now, what the application does is basically constantly reads\writes to serial ports (3 in fact). The "datastream" is rather heavy...pretty much constant 115k baud data. Once the user "starts" the process, the program starts a single worker thread that uses a while loop to perform all the serial tasks...over and over. The main UI thread, waits for the user to stop (by selecting stop from the menu or whatever) and processes all normal windows messages. I have added a small Sleep() call to the while loop, but I can only sleep for about 50ms before the buffers start stacking up and eventually the program crashes.

The problem is that once this thread begins processing, CPU Utilization hits the roof. Is this normal? What I should expect? Any ways to prevent this? Any advice?

Thanks in advance!
Phil