www.pudn.com > xianchengchi.rar > WorkThreadPool.h
// WorkThreadPool.h: interface for the CWorkThreadPool class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_WORKTHREADPOOL_H__30AF8906_EE6D_4FAD_B0F3_5F4F8AEFB15E__INCLUDED_)
#define AFX_WORKTHREADPOOL_H__30AF8906_EE6D_4FAD_B0F3_5F4F8AEFB15E__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "afxmt.h"
typedef void lpCallBack (LPVOID lpParam);
class CWorkThreadPool
{
public:
void SetThreadNum(int num = 3);
void Stop();
void SetPF(lpCallBack *f);
void RegisterWorkItem(LPVOID item);
void Run();
CWorkThreadPool();
virtual ~CWorkThreadPool();
private:
static UINT WORK(LPVOID lp);
void RemoveWorkItem(LPVOID _pItem);
UINT Work();
LPVOID GetNextItem();
CEvent m_exit;
CCriticalSection m_lock;
CEvent m_signal;
CPtrArray m_workItems;
lpCallBack *pf;
int m_threadNum;
};
#endif // !defined(AFX_WORKTHREADPOOL_H__30AF8906_EE6D_4FAD_B0F3_5F4F8AEFB15E__INCLUDED_)