forked from metin-server/m2dev-client-src
add GameThreadPool
This commit is contained in:
@@ -2,19 +2,15 @@
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(AFX_AREALOADERTHREAD_H__E43FBE42_42F4_4F0E_B9DA_D7B7C5EA0753__INCLUDED_)
|
||||
#define AFX_AREALOADERTHREAD_H__E43FBE42_42F4_4F0E_B9DA_D7B7C5EA0753__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#include "EterLib/Mutex.h"
|
||||
#include <deque>
|
||||
#include <mutex>
|
||||
|
||||
class CTerrain;
|
||||
class CArea;
|
||||
|
||||
class TEMP_CAreaLoaderThread
|
||||
class TEMP_CAreaLoaderThread
|
||||
{
|
||||
public:
|
||||
TEMP_CAreaLoaderThread();
|
||||
@@ -24,50 +20,21 @@ public:
|
||||
void Shutdown();
|
||||
|
||||
void Request(CTerrain * pTerrain);
|
||||
|
||||
bool Fetch(CTerrain ** ppTerrian);
|
||||
|
||||
void Request(CArea * pArea);
|
||||
|
||||
bool Fetch(CArea ** ppArea);
|
||||
|
||||
protected:
|
||||
static UINT CALLBACK EntryPoint(void * pThis);
|
||||
UINT Run(void * arg);
|
||||
|
||||
void * Arg() const { return m_pArg; }
|
||||
void Arg(void * arg) { m_pArg = arg; }
|
||||
|
||||
HANDLE m_hThread;
|
||||
|
||||
private:
|
||||
void * m_pArg;
|
||||
unsigned m_uThreadID;
|
||||
|
||||
protected:
|
||||
UINT Setup();
|
||||
UINT Execute(void * pvArg);
|
||||
void Destroy();
|
||||
void ProcessTerrain();
|
||||
void ProcessArea();
|
||||
|
||||
void ProcessTerrain(CTerrain * pTerrain);
|
||||
void ProcessArea(CArea * pArea);
|
||||
|
||||
private:
|
||||
std::deque<CTerrain *> m_pTerrainRequestDeque;
|
||||
Mutex m_TerrainRequestMutex;
|
||||
|
||||
std::deque<CTerrain *> m_pTerrainCompleteDeque;
|
||||
Mutex m_TerrainCompleteMutex;
|
||||
|
||||
std::deque<CArea *> m_pAreaRequestDeque;
|
||||
Mutex m_AreaRequestMutex;
|
||||
|
||||
std::mutex m_TerrainCompleteMutex;
|
||||
|
||||
std::deque<CArea *> m_pAreaCompleteDeque;
|
||||
Mutex m_AreaCompleteMutex;
|
||||
std::mutex m_AreaCompleteMutex;
|
||||
|
||||
HANDLE m_hSemaphore;
|
||||
int m_iRestSemCount;
|
||||
bool m_bShutdowned;
|
||||
|
||||
};
|
||||
|
||||
#endif // !defined(AFX_AREALOADERTHREAD_H__E43FBE42_42F4_4F0E_B9DA_D7B7C5EA0753__INCLUDED_)
|
||||
|
||||
Reference in New Issue
Block a user