Files
2022-10-26 12:25:11 +08:00

57 lines
1.4 KiB
C++

#pragma once
/**************************************************************************************************
작성일: 2008-07-15
작성자: 문상현 (youngmoon@webzen.co.kr)
설명: IOCP 를 이용하여 스레드POOL 을 지원한다.
**************************************************************************************************/
#define MAX_THREAD_COUNT 32
#define IOCPTHREAD_CLOSE -1
#include <Windows.h>
#include <process.h>
#include <vector>
#include "WorkerThread.h"
class CWorkerThreadPool
{
public:
CWorkerThreadPool();
~CWorkerThreadPool();
// 스레드 풀을 생성한다.
bool CreateThreadPool(DWORD dwThreadCnt);
// 스레드 풀을 종료한다.
void DestoryThreadPool();
// 작업을 추가한다.
BOOL AddJob(CWorkerThread* pWorker);
// 스레드을 생성한다.
void AddJobThread(CWorkerThread* pWorker);
// 모든 작업 스레드를 정지 시킨다.
void AllStopJobThread();
// 등록된 모든 스레드를 호출한다.
void OnTimr(HANDLE hRequest, DWORD dwRequest);
private:
// IOCP 메인 핸들
HANDLE m_hIOCP;
// 스레드 프로시져의 핸들
HANDLE m_hThread[MAX_THREAD_COUNT];
// 스레드 수
DWORD m_dwThreadCount;
// 작업 POOL 스레드 프로시져
static UINT __stdcall WorkThreadProc( LPVOID parameter );
// 세션 POOL 스레드 프로시져
static UINT __stdcall SessionThreadProc( LPVOID parameter );
//작업스레드 컨테이너
std::vector<CWorkerThread*> m_vecThread;
typedef std::vector<CWorkerThread*>::iterator WorkerIter;
};