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
반응형
'언리얼 엔진 > C++' 카테고리의 다른 글
[언리얼엔진] TArray 와 TSet 의 장단점 (0) | 2023.07.30 |
---|---|
언리얼엔진 C++ 에디터 뷰포트에서 월드에 있는 액터 Focus (0) | 2022.12.05 |
언리얼엔진 C++ Enum to String(static template) (0) | 2022.07.22 |
언리얼엔진 C++ BehaviorTree Tip (노드 설명 추가) (0) | 2022.07.04 |
언리얼엔진 C++ 클래스에 사용자 지정 섹션 만들기 (0) | 2022.06.07 |