65.9K
CodeProject is changing. Read more.
Home

Improve your server with Thread Pooling

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.43/5 (7 votes)

Aug 16, 2004

1 min read

viewsIcon

30080

downloadIcon

793

This articles explains how to implement thread pooling in applications.

Introduction

"Many applications create threads that spend a great deal of time in the sleeping state, waiting for an event to occur. Other threads might enter a sleeping state only to be awakened periodically to poll for a change or update status information. Thread pooling enables you to use threads more efficiently by providing your application with a pool of worker threads that are managed by the system. One thread monitors the status of several wait operations queued to the thread pool. When a wait operation completes, a worker thread from the thread pool executes the corresponding callback function." (MSDN 2003).

Requirements

  1. /MT flag is required.
  2. MFC.

Explanation

The project is well documented and it contains a simple demonstration. The demonstration displays a pool of two threads and fifteen jobs. You can think of it as fifteen connections if it was a socket server.

In the demo, one thread is stuck for a period of time while the work is not stopped, the other thread keeps on doing the jobs.

Call initialize in order to start the thread pool.

You must declare a callback function which will handle jobs of all threads. It should be like this:

bool ThreadCallback(LONG jobId, LPVOID pParam)

The jobId is an inside counting but you'll need it to remove jobs with the following function:

RemoveJob( LONG jobID )

Good luck!