UE5) Thread사용
직접 Thread를 정의해서 사용
FRunnable 클래스를 상속받는것으로 Thread를 정의할 수 있다.
헤더
코드
사용법
간단한 비 동기 Thread 사용
AsyncTask를 사용하면 Thread를 생성해 즉시 사용 가능하다,
만약 C#과 같다면,
이 방식으로 사용할 경우 TreadPool에 여유가 있으면서, 놀고있는 Thread가 없는 경우에만 Thread가 생성되서 할당 될 것이고,
그렇지 않다면 놀고있는 Thread가 이 작업을 처리할 것이다.
AsyncTask(ENamedThreads::AnyHiPriThreadNormalTask, []()
{
//Do Something
});
또한 AsyncTask는 중첩 가능하다.
외부 Thread에서 GameThread로의 작업 요청
GameThread에서만 가능한 작업들을 처리할때 사용한다.
일부 코드는 GameThread 이외에서 동작하지 못 하도록 막혀있는데, 그 때 사용 가능할만한 코드이다.
ENamedThreads 열거형 값에 따라서 다른 Thread로의 요청이 가능하다.
AsyncTask(ENamedThreads::AnyHiPriThreadNormalTask, []()
{
//다른 Thread에서 할 일
AsyncTask(ENamedThreads::GameThread, []()
{
//GameThread에서 처리해야만 할 일.
});
});
스레드 사용과 뮤텍스 락
나중에 시간있으면 정리해서 다시 씀.
스레드와 텍스처 로드
텍스처는 반드시 게임 스레드에서 로드되어야 합니다. 텍스처 복사 작업이 다른 스레드에서 발생해선 안 됩니다.