SDC C-Project CF Review 프로그램
LYW
2021-10-15 e5fa774d622d6852fe8e1f033045aed221649108
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#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;
};