UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FThreadOwnerSection Class Reference

#include <CriticalSectionQueryable.h>

Public Member Functions

bool TryTakeOwnership (FCriticalSectionQueryable &NotYetEnteredAegisLock)
 
bool TryTakeOwnership (FCriticalSection &NotYetEnteredAegisLock)
 
bool TryTakeOwnership (FScopeLockQueryable &AlreadyEnteredAegisScopeLock)
 
bool TryTakeOwnership (FScopeLock &AlreadyEnteredAegisScopeLock)
 
void ReleaseOwnershipChecked (FCriticalSectionQueryable &NotYetEnteredAegisLock)
 
void ReleaseOwnershipChecked (FCriticalSection &NotYetEnteredAegisLock)
 
void ReleaseOwnershipChecked (FScopeLockQueryable &AlreadyEnteredAegisScopeLock)
 
void ReleaseOwnershipChecked (FScopeLock &AlreadyEnteredAegisScopeLock)
 
bool IsOwned (FScopeLockQueryable &AlreadyEnteredAegisScopeLock) const
 
bool IsOwned (FScopeLock &AlreadyEnteredAegisScopeLock) const
 
bool IsOwnedByCurrentThread () const
 

Detailed Description

Like a critical section: only a single thread can posess it at once. But provides a different API than a critical section to more flexibly interact with another critical section. With multiple normal critical sections they must be entered in the same order to prevent deadlocks. A ThreadOwnerSection is instead tested and claimed for ownership only while inside its collaborating critical section (called the AegisLock), and ownership can then continue to be held even after releasing the AegisLock.

Member Function Documentation

◆ IsOwned() [1/2]

bool FThreadOwnerSection::IsOwned ( FScopeLock AlreadyEnteredAegisScopeLock) const
inline

◆ IsOwned() [2/2]

bool FThreadOwnerSection::IsOwned ( FScopeLockQueryable AlreadyEnteredAegisScopeLock) const
inline

◆ IsOwnedByCurrentThread()

bool FThreadOwnerSection::IsOwnedByCurrentThread ( ) const
inline

◆ ReleaseOwnershipChecked() [1/4]

void FThreadOwnerSection::ReleaseOwnershipChecked ( FCriticalSection NotYetEnteredAegisLock)
inline

◆ ReleaseOwnershipChecked() [2/4]

void FThreadOwnerSection::ReleaseOwnershipChecked ( FCriticalSectionQueryable NotYetEnteredAegisLock)
inline

◆ ReleaseOwnershipChecked() [3/4]

void FThreadOwnerSection::ReleaseOwnershipChecked ( FScopeLock AlreadyEnteredAegisScopeLock)
inline

◆ ReleaseOwnershipChecked() [4/4]

void FThreadOwnerSection::ReleaseOwnershipChecked ( FScopeLockQueryable AlreadyEnteredAegisScopeLock)
inline

◆ TryTakeOwnership() [1/4]

bool FThreadOwnerSection::TryTakeOwnership ( FCriticalSection NotYetEnteredAegisLock)
inline

◆ TryTakeOwnership() [2/4]

bool FThreadOwnerSection::TryTakeOwnership ( FCriticalSectionQueryable NotYetEnteredAegisLock)
inline

◆ TryTakeOwnership() [3/4]

bool FThreadOwnerSection::TryTakeOwnership ( FScopeLock AlreadyEnteredAegisScopeLock)
inline

◆ TryTakeOwnership() [4/4]

bool FThreadOwnerSection::TryTakeOwnership ( FScopeLockQueryable AlreadyEnteredAegisScopeLock)
inline

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