Files
Client/Server/NFAuthTool/NFAuthServer/Nave/NFThreadManager.h
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

75 lines
1.8 KiB
C++

/**
* @file NFThreadManager.h
* @brief Auto ThreadManager 클래스
* @remarks
* @author 강동명(edith2580@gmail.com)
* @date 2009-04-02
*/
#pragma once
#define WINDOWS_LEAN_AND_MEAN
#include <windows.h>
#include <process.h>
#include "NFSync.h"
#include "NFThread.h"
namespace Nave {
/**
* @class NFThreadManager
* @brief 스레드 매니져
* @remarks
* 1) NFThread 를 상속받은 녀석 \r\n
* \r\n
* Nave::NFThreadManager::Run(this); \r\n
* Nave::NFThreadManager::Stop(this, 2000); \r\n
* \r\n
* 2) 스레드 매니져를 사용하려면 \r\n
* Nave::NFThreadManager::GetInstance().Register( new CTest(this) ); \r\n
* \r\n
* // 소멸시 자동으로 UnRegister가 호출되어메모리에서 삭제됨.. \r\n
*
* @par
* @author Edith
* @date 2009-04-05
*/
class NFThreadManager : public Nave::NFSingleton<NFThreadManager>
{
public:
/// NFThreadManager 생성자
NFThreadManager();
/// NFThreadManager 소멸자
virtual ~NFThreadManager();
/// 스레드를 등록한다. 최대 32개까지 등록할 수 있다.
BOOL Register(NFThread* lpThread);
/// 모든 스레드를 종료시킨다.
BOOL UnRegister();
/// 매니저를 사용하지 않고, 그냥 실행 시킨다.
static HANDLE Run(NFThread* lpThread);
/// 매니저를 사용하지 않고, 그냥 종료 시킨다.
static BOOL Stop(NFThread* lpThread, unsigned long dwTimeout = INFINITE);
private:
enum {
MAX_THREAD_NUM = 32 /// 최대 스레드 개수
};
/// 스레드 객체 포인터
NFThread* m_lpThreads[MAX_THREAD_NUM];
/// 스레드 핸들
HANDLE m_hThreads[MAX_THREAD_NUM];
/// 스레드 Lock
Nave::NFSync m_ThreadLock;
/// 스레드 개수
Nave::uint32 m_nThreadNum;
/// UnRegister의 진행여부
Nave::uint32 m_bUnRegStarted;
};
}