#pragma once
|
|
#include "ThreadData.h"
|
#include "ThreadPools.h"
|
#include "afxmt.h"
|
|
#include <vector>
|
typedef std::vector<CWorkThreadData*> VectorWorkThreadData;
|
typedef std::vector<CWorkThreadData*>::iterator VectorWorkThreadDataIt;
|
|
class AFX_EXT_CLASS CWorkThreadPools : public CThreadPools
|
{
|
public:
|
CWorkThreadPools(int nThreadCount=1);
|
virtual ~CWorkThreadPools(void);
|
size_t GetThreadDataCount() const;
|
|
protected:
|
virtual void WorkThreadProcess(PVOID pParameter) = 0;
|
|
protected:
|
void RunWorkThread(PVOID pParameter);
|
BOOL CreateWorkThread(PVOID pParameter);
|
void CloseWorkThread();
|
void ClearThreadData();
|
static VOID CALLBACK WorkCallback(PTP_CALLBACK_INSTANCE pInstance, PVOID pParameter, PTP_WORK pWork);
|
|
protected:
|
PTP_WORK m_pWork;
|
PTP_WORK_CALLBACK m_pWorkCallback;
|
|
VectorWorkThreadData m_vecThreadData;
|
size_t m_nThreadDataCount;
|
CCriticalSection m_csThreadData;
|
};
|