언리얼 엔진/C++
언리얼엔진 C++ Thread 만들기 (FRunnable)
mane
2022. 12. 5. 15:18
728x90
반응형
언리얼엔진에서 Thread 를 만드는 방법은 여러 가지 있는 걸로 알고 있다.
해당 글은 FRunnable 을 이용한 Thread 생성 방법을 설명한다.
참고사이트 :UE5 Multithreading With FRunnable And Thread Workflow – Unreal C++ API
[ FRunnable ]
class CORE_API FRunnable
{
public:
virtual void Init();
virtual uint32 Run = 0;
virtual void Exit() {}
virtual void Stop() {}
virtual ~FRunnable() {}
}
- Init()
- Game Thread 에서 실행된다. - Blocking
- Thread 초기화 및 생성자이다.
- false 를 반환하면 Thread 가 실행되지 않는다.
- Run()
- 새로운 Thread 에서 실행된다. - Nonblocking
- Multi Thread 작업을 수행하는 실제 함수이다.
- Exit()
- 새로운 Thread 에서 실행된다 . - Nonblocking
- Thread 실행이 완료되고 실행된다.
- 즉, Run() 함수가 종료된 후 실행된다.
- Stop()
- Game Thread 에서 실행된다. - Blocking
- FRunnableThread::Kill() 이 호출되고 실행된다.
[ 사용법 ]
.h
class MYPROJECT_API FThreadTest : public FRunnable
{
public:
FThreadTest();
virtual ~FThreadTest() override;
virtual bool Init() override;
virtual uint32 Run() override;
virtual void Exit() override;
virtual void Stop() override;
private:
FRunnableThread* Thread;
};
.cpp
FThreadTest::FThreadTest()
{
Thread = FRunnableThread::Create(this, TEXT("Thread")); // 생성자에서 Thread 생성
}
bool FThreadTest::Init()
{
return true;
}
uint32 FThreadTest::Run()
{
// TODO
return 0;
}
void FThreadTest::Exit()
{
UE_LOG(LogTemp, Warning, TEXT("Thread exit"));
}
// Thread 를 사용할 오브젝트
FThreadtest* Thread = new FThreadTest();
728x90
반응형