• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 433
  • Last Modified:

How to implement Multi-threading

I am building an SDI MFC application which has a user interface class and a database class.  I am also using a virtual device driver to access the network interface card in a promiscuous mode.  The packet monitor function makes a call to DeviceIoControl to retrieve any packets that arrive at the NIC.  Since at any moment, there may or may not be a packet to read, I call GetOverlappedResult which waits indefinetly for a packet arrival.  This, of course locks up the many windows GUI messages I am using to update the GUI, since windows is in a single thread mode and I am blocking any other progress.  How should I implement this function to run under a separate thread and still have the packet results available to the other thread?

Thanks
0
bknouse
Asked:
bknouse
1 Solution
 
Tommy HuiCommented:
You need to create a function that matches this prototype:

  LRESULT MyThreadedFunc(LPVOID param);

Then you can use AfxBeginThread(MyThreadedFunc, anyParam);

You also need to structure your code so that it is doing something like

  {
    while (TRUE)
    {
      GetOverlappedResult(...);
      /* communicated with program that result is ready */
    }
  }


0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now