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_)