본문 바로가기
Unreal

FRunnable Class

by imagineer_jinny 2024. 10. 2.

FRunnable 클래스란?

언리얼 엔진에서 FRunnable 클래스는 멀티스레딩을 구현할 때 사용되는 중요한 클래스
쉽게 말해, 프로그램이 여러 작업을 동시에 처리하도록 도와주는 도구 중 하나

멀티스레딩이란?

멀티스레딩은 여러 작업을 동시에 실행할 수 있게 하는 기술
예를 들어, 게임에서 캐릭터가 움직이는 동안 다른 작업(예: 배경 로딩, AI 계산 등)을 동시에 처리해야 할 때 멀티스레딩을 사용

FRunnable 클래스의 역할

FRunnable 클래스는 멀티스레딩에서 각각의 스레드가 해야 할 작업을 정의하는 데 사용됨
즉, 이 클래스는 스레드가 어떤 일을 해야 하는지, 언제 일을 시작하고 끝내는지를 결정하는 구조를 제공합니다.

주요 함수

  • Init(): 스레드가 시작되기 전에 호출되는 함수. 리소스를 준비하거나 초기화를 할 수 있음
  • Run(): 스레드의 실제 작업이 이 함수에서 진행됨. 반복해서 실행할 코드를 이 곳에 넣는다.
  • Stop(): 스레드를 멈출 때 호출되는 함수
  • Exit(): 스레드가 완전히 종료될 때 호출되는 함수

FRunnable을 사용한 멀티스레딩 작업 흐름

  1. FRunnable 클래스 상속: 먼저, FRunnable을 상속받는 새로운 클래스를 만듭니다.
  2. Run 함수 정의: 스레드에서 해야 할 주요 작업을 Run 함수에 작성합니다.
  3. FRunnableThread: 스레드 관리에 사용되는 FRunnableThread 클래스를 통해 스레드를 생성하고 시작합니다.
  4. 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"));

댓글