#1. Engine System
+ WinMain - EngineSystem
+ EngineCore (현재 글)
+ EngineError
+ MainNode
#2. FrameWork
+ Grahpics
+ Image - SpriteData
+ Layer
+ Input
+ Game
+ Manager
+ Game Interface
+ Utility
#3. Testing Module
+ 2D Image Test
+ 2D Animation Test
+ Game UI Test
-----------------------------------------------------------------------
이어서 EngineCore의 cpp 입니다.
.h 에서 선언해두었던 std::thread를 이용하는 내용만 있습니다만.
실질적으로 어떤 것을 수행하게끔 구현은 시켜두지 않았습니다.
본래 계획은 Component Based 형식의 엔진 구조를 만들어서
이 코어쓰레드들을 여러개 만들어서 일을 시킬려고 했습니다만
아직 개발중인지라 틀만 잡아두고 냅둔 상태입니다.
그래도 아무 설명도 안하고 넘어가면 찝찝하니 initialize( )에 적어둔 내용을 보겠습니다.
#include "stdafx.h" | |
#include "engineCore.h" | |
EngineCore::EngineCore() | |
{ | |
} | |
EngineCore::~EngineCore() | |
{ | |
for (auto iter : vecWorkers) | |
{ | |
if (iter->joinable()) | |
iter->join(); | |
} | |
} | |
bool EngineCore::initialize() | |
{ | |
bool success = false; | |
SYSTEM_INFO systemInfo; | |
GetSystemInfo(&systemInfo); //Get SystemInfo | |
DWORD cpu_count = systemInfo.dwNumberOfProcessors; //CPU CORE COUNT | |
int coreSize = (int)cpu_count; | |
//vecWorker Push_Back(Emplace_Back) Worker Thread for CPU Count | |
for (int i = 0; i < coreSize; i++) | |
{ | |
std::thread worker = std::thread([&]{ CoreSupport(); }); | |
vecWorkers.emplace_back(&worker); | |
} | |
success = true; | |
return success; | |
} | |
void EngineCore::CoreSupport() | |
{ | |
//To do Something | |
} |
SYSTEM_INFO systemInfo;
GetSystemInfo(&systemInfo); //Get SystemInfo
DWORD cpu_count = systemInfo.dwNumberOfProcessors; //CPU CORE COUNT
는 윈도우 함수를 이용해서 cpu 코어 갯수를 알아내는 방법입니다.
DWORD 형태로 값이 반환되어 지기 때문에 (int)로 형변환하여
받아온 코어 갯수 만큼 쓰레드를 생성하여 컨테이너에 담아둡니다.
그리고 그 쓰레드가 일할 내용은 선언해두었던 가상 함수 CoreSupport( ) 를 넣어주었습니다.
만약 어떤 쓰레드를 이용하여 일을 시킬 내용이 생긴다면
EngineCore를 부모로 상속받아서 어떤 작업 내용을 CoreSupport에 담아두면 될 것 같습니다.
그러나 아직은 확실히 동작시켜본 적이 없기 때문에 확신은 없습니다.
그냥 이렇게 한번 돌려보자 라는 생각으로 만들어두었을 뿐..
아무튼 현재 사용하지 않는 코어 부분들입니다!
'MyProject > SephyEngine' 카테고리의 다른 글
June_Engine #1_MainNode (0) | 2017.04.07 |
---|---|
June_Engine #1_EngineError.h (0) | 2017.04.07 |
June_Engine #1_EngineCore.h (1) (0) | 2017.04.06 |
June_Engine #1_EngineSystem (0) | 2017.04.06 |
June_Engine #1_WinMain (0) | 2017.04.06 |