FRunnable 클래스란?
언리얼 엔진에서 FRunnable 클래스는 멀티스레딩을 구현할 때 사용되는 중요한 클래스
쉽게 말해, 프로그램이 여러 작업을 동시에 처리하도록 도와주는 도구 중 하나
멀티스레딩이란?
멀티스레딩은 여러 작업을 동시에 실행할 수 있게 하는 기술
예를 들어, 게임에서 캐릭터가 움직이는 동안 다른 작업(예: 배경 로딩, AI 계산 등)을 동시에 처리해야 할 때 멀티스레딩을 사용
FRunnable 클래스의 역할
FRunnable 클래스는 멀티스레딩에서 각각의 스레드가 해야 할 작업을 정의하는 데 사용됨
즉, 이 클래스는 스레드가 어떤 일을 해야 하는지, 언제 일을 시작하고 끝내는지를 결정하는 구조를 제공합니다.
주요 함수
- Init(): 스레드가 시작되기 전에 호출되는 함수. 리소스를 준비하거나 초기화를 할 수 있음
- Run(): 스레드의 실제 작업이 이 함수에서 진행됨. 반복해서 실행할 코드를 이 곳에 넣는다.
- Stop(): 스레드를 멈출 때 호출되는 함수
- Exit(): 스레드가 완전히 종료될 때 호출되는 함수
FRunnable을 사용한 멀티스레딩 작업 흐름
- FRunnable 클래스 상속: 먼저, FRunnable을 상속받는 새로운 클래스를 만듭니다.
- Run 함수 정의: 스레드에서 해야 할 주요 작업을 Run 함수에 작성합니다.
- FRunnableThread: 스레드 관리에 사용되는 FRunnableThread 클래스를 통해 스레드를 생성하고 시작합니다.
- Stop 함수 사용: 작업이 끝나면 Stop 함수로 스레드를 멈추고, 리소스를 정리합니다.
class MyRunnable : public FRunnable
{
public:
virtual bool Init() override
{
// 초기화 작업
return true;
}
virtual uint32 Run() override
{
// 스레드에서 실행할 작업
while (true)
{
// 반복 작업
}
return 0;
}
virtual void Stop() override
{
// 스레드 멈추기
}
virtual void Exit() override
{
// 종료 작업
}
};
// 스레드 생성
FRunnableThread* Thread = FRunnableThread::Create(new MyRunnable(), TEXT("MyRunnableThread"));
'Unreal' 카테고리의 다른 글
[Unreal] Bone, Socket (0) | 2024.10.15 |
---|---|
Event Dispatcher은 꼭 써야 할 때 쓰자(Delegate) (0) | 2024.08.20 |
[Unreal] Multiplayer Game Study (0) | 2024.07.04 |
[Unreal] 부모 객체의 스케일 변경이 자식 객체의 위치에 영향을 준다 (0) | 2024.06.07 |
[Unreal] Custom Event vs Create Event (0) | 2024.06.05 |
댓글