UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FRunnableThread Class Referenceabstract

#include <RunnableThread.h>

+ Inheritance diagram for FRunnableThread:

Public Types

enum class  ThreadType { Real , Fake , Forkable }
 

Public Member Functions

virtual void SetThreadPriority (EThreadPriority NewPriority)=0
 
virtual bool SetThreadAffinity (const FThreadAffinity &Affinity)
 
virtual void Suspend (bool bShouldPause=true)=0
 
virtual bool Kill (bool bShouldWait=true)=0
 
virtual void WaitForCompletion ()=0
 
virtual FRunnableThread::ThreadType GetThreadType () const
 
const uint32 GetThreadID () const
 
const FString & GetThreadName () const
 
EThreadPriority GetThreadPriority () const
 
CORE_API FRunnableThread ()
 
virtual CORE_API ~FRunnableThread ()
 

Static Public Member Functions

static CORE_API uint32 GetTlsSlot ()
 
static CORE_API FRunnableThreadCreate (class FRunnable *InRunnable, const TCHAR *ThreadName, uint32 InStackSize=0, EThreadPriority InThreadPri=TPri_Normal, uint64 InThreadAffinityMask=FPlatformAffinity::GetNoAffinityMask(), EThreadCreateFlags InCreateFlags=EThreadCreateFlags::None)
 
static FRunnableThreadGetRunnableThread ()
 

Protected Member Functions

virtual bool CreateInternal (FRunnable *InRunnable, const TCHAR *InThreadName, uint32 InStackSize=0, EThreadPriority InThreadPri=TPri_Normal, uint64 InThreadAffinityMask=0, EThreadCreateFlags InCreateFlags=EThreadCreateFlags::None)=0
 
CORE_API void SetTls ()
 
CORE_API void FreeTls ()
 

Protected Attributes

FString ThreadName
 
FRunnableRunnable
 
FEventThreadInitSyncEvent
 
uint64 ThreadAffinityMask
 
EThreadPriority ThreadPriority
 
uint32 ThreadID
 

Friends

class FThreadSingletonInitializer
 
class FTlsAutoCleanup
 
class FThreadManager
 
class FForkableThread
 
class FForkProcessHelper
 

Detailed Description

Interface for runnable threads.

This interface specifies the methods used to manage a thread's life cycle.

Member Enumeration Documentation

◆ ThreadType

List of unique thread types we can create

Enumerator
Real 
Fake 
Forkable 

Constructor & Destructor Documentation

◆ FRunnableThread()

FRunnableThread::FRunnableThread ( )

Default constructor.

◆ ~FRunnableThread()

FRunnableThread::~FRunnableThread ( )
virtual

Virtual destructor

Member Function Documentation

◆ Create()

FRunnableThread * FRunnableThread::Create ( class FRunnable InRunnable,
const TCHAR ThreadName,
uint32  InStackSize = 0,
EThreadPriority  InThreadPri = TPri_Normal,
uint64  InThreadAffinityMask = FPlatformAffinity::GetNoAffinityMask(),
EThreadCreateFlags  InCreateFlags = EThreadCreateFlags::None 
)
static

Factory method to create a thread with the specified stack size and thread priority.

Parameters
InRunnableThe runnable object to execute
ThreadNameName of the thread
InStackSizeThe size of the stack to create. 0 means use the current thread's stack size
InThreadPriTells the thread whether it needs to adjust its priority or not. Defaults to normal priority
Returns
The newly created thread or nullptr if it failed

◆ CreateInternal()

virtual bool FRunnableThread::CreateInternal ( FRunnable InRunnable,
const TCHAR InThreadName,
uint32  InStackSize = 0,
EThreadPriority  InThreadPri = TPri_Normal,
uint64  InThreadAffinityMask = 0,
EThreadCreateFlags  InCreateFlags = EThreadCreateFlags::None 
)
protectedpure virtual

Creates the thread with the specified stack size and thread priority.

Parameters
InRunnableThe runnable object to execute
ThreadNameName of the thread
InStackSizeThe size of the stack to create. 0 means use the current thread's stack size
InThreadPriTells the thread whether it needs to adjust its priority or not. Defaults to normal priority
Returns
True if the thread and all of its initialization was successful, false otherwise

Implemented in FForkableThread, FFakeThread, and FRunnableThreadWin.

◆ FreeTls()

void FRunnableThread::FreeTls ( )
protected

Deletes all FTlsAutoCleanup objects created for this thread.

◆ GetRunnableThread()

static FRunnableThread * FRunnableThread::GetRunnableThread ( )
inlinestatic
Returns
a runnable thread that is executing this runnable, if return value is nullptr, it means the running thread can be game thread or a thread created outside the runnable interface

◆ GetThreadID()

const uint32 FRunnableThread::GetThreadID ( ) const
inline

Thread ID for this thread

Returns
ID that was set by CreateThread
See also
GetThreadName

◆ GetThreadName()

const FString & FRunnableThread::GetThreadName ( ) const
inline

Retrieves the given name of the thread

Returns
Name that was set by CreateThread
See also
GetThreadID

◆ GetThreadPriority()

EThreadPriority FRunnableThread::GetThreadPriority ( ) const
inline

Returns the runnable's thread priority

◆ GetThreadType()

virtual FRunnableThread::ThreadType FRunnableThread::GetThreadType ( ) const
inlinevirtual

Returns the type of thread this is

Reimplemented in FFakeThread, and FForkableThread.

◆ GetTlsSlot()

uint32 FRunnableThread::GetTlsSlot ( )
static

Gets a new Tls slot for storing the runnable thread pointer.

◆ Kill()

virtual bool FRunnableThread::Kill ( bool  bShouldWait = true)
pure virtual

Tells the thread to exit. If the caller needs to know when the thread has exited, it should use the bShouldWait value. It's highly recommended not to kill the thread without waiting for it. Having a thread forcibly destroyed can cause leaks and deadlocks.

The kill method is calling Stop() on the runnable to kill the thread gracefully.

Parameters
bShouldWaitIf true, the call will wait infinitely for the thread to exit.
Returns
Always true

Implemented in FFakeThread, FForkableThread, and FRunnableThreadWin.

◆ SetThreadAffinity()

virtual bool FRunnableThread::SetThreadAffinity ( const FThreadAffinity Affinity)
inlinevirtual

Changes the thread affinity of the currently running thread

Parameters
ThreadAffinityMaskThe thread affinity to change to (can be 0 to keep previously set affinity mask)
ProcessorGroupThe thread group to change to
Returns
returns true if the affinity changed, false if affinity did not change

Reimplemented in FRunnableThreadWin.

◆ SetThreadPriority()

virtual void FRunnableThread::SetThreadPriority ( EThreadPriority  NewPriority)
pure virtual

Changes the thread priority of the currently running thread

Parameters
NewPriorityThe thread priority to change to

Implemented in FFakeThread, FForkableThread, and FRunnableThreadWin.

◆ SetTls()

void FRunnableThread::SetTls ( )
protected

Stores this instance in the runnable thread TLS slot.

◆ Suspend()

virtual void FRunnableThread::Suspend ( bool  bShouldPause = true)
pure virtual

Tells the thread to either pause execution or resume depending on the passed in value.

Parameters
bShouldPauseWhether to pause the thread (true) or resume (false)

Implemented in FFakeThread, FForkableThread, and FRunnableThreadWin.

◆ WaitForCompletion()

virtual void FRunnableThread::WaitForCompletion ( )
pure virtual

Halts the caller until this thread is has completed its work.

Implemented in FFakeThread, FForkableThread, and FRunnableThreadWin.

Friends And Related Symbol Documentation

◆ FForkableThread

friend class FForkableThread
friend

◆ FForkProcessHelper

friend class FForkProcessHelper
friend

◆ FThreadManager

friend class FThreadManager
friend

◆ FThreadSingletonInitializer

◆ FTlsAutoCleanup

friend class FTlsAutoCleanup
friend

Member Data Documentation

◆ Runnable

FRunnable* FRunnableThread::Runnable
protected

The runnable object to execute on this thread.

◆ ThreadAffinityMask

uint64 FRunnableThread::ThreadAffinityMask
protected

The Affinity to run the thread with.

◆ ThreadID

uint32 FRunnableThread::ThreadID
protected

ID set during thread creation.

◆ ThreadInitSyncEvent

FEvent* FRunnableThread::ThreadInitSyncEvent
protected

Sync event to make sure that Init() has been completed before allowing the main thread to continue.

◆ ThreadName

FString FRunnableThread::ThreadName
protected

Holds the name of the thread.

◆ ThreadPriority

EThreadPriority FRunnableThread::ThreadPriority
protected

The priority to run the thread at.


The documentation for this class was generated from the following files: