posted by REDFORCE 2017. 4. 7. 09:34

#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
}
view raw engineCore.cpp hosted with ❤ by GitHub


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