UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::Core::Private::Atomic Namespace Reference

Classes

struct  TAtomicBaseType
 
struct  TAtomicBaseType< T *, false, false, true >
 
struct  TAtomicBaseType< T, false, false, false >
 
struct  TAtomicBaseType< T, false, true, true >
 
struct  TIsSupportedSize
 
struct  TIsVoidPointer
 
struct  TIsVoidPointer< const void * >
 
struct  TIsVoidPointer< const volatile void * >
 
struct  TIsVoidPointer< void * >
 
struct  TIsVoidPointer< volatile void * >
 

Typedefs

template<typename T >
using TUnderlyingIntegerType_T = TSignedIntType_T< sizeof(T)>
 
template<typename T , bool bIsVoidPointer = TIsVoidPointer<T>::Value, bool bIsIntegral = TIsIntegral<T>::Value, bool bCanUsePlatformAtomics = TIsSupportedSize<sizeof(T)>::Value>
using TAtomicBaseType_T = typename TAtomicBaseType< T, bIsVoidPointer, bIsIntegral, bCanUsePlatformAtomics >::Type
 

Functions

template<typename T >
FORCEINLINELoadRelaxed (const volatile T *Element)
 
template<typename T >
FORCEINLINELoad (const volatile T *Element)
 
template<typename T >
FORCEINLINE void StoreRelaxed (const volatile T *Element, T Value)
 
template<typename T >
FORCEINLINE void Store (const volatile T *Element, T Value)
 
template<typename T >
FORCEINLINEExchange (volatile T *Element, T Value)
 
template<typename T >
FORCEINLINEIncrementExchange (volatile T *Element)
 
template<typename T >
FORCEINLINE T * IncrementExchange (T *volatile *Element)
 
template<typename T , typename DiffType >
FORCEINLINEAddExchange (volatile T *Element, DiffType Diff)
 
template<typename T , typename DiffType >
FORCEINLINE T * AddExchange (T *volatile *Element, DiffType Diff)
 
template<typename T >
FORCEINLINEDecrementExchange (volatile T *Element)
 
template<typename T >
FORCEINLINE T * DecrementExchange (T *volatile *Element)
 
template<typename T , typename DiffType >
FORCEINLINESubExchange (volatile T *Element, DiffType Diff)
 
template<typename T , typename DiffType >
FORCEINLINE T * SubExchange (T *volatile *Element, DiffType Diff)
 
template<typename T >
FORCEINLINECompareExchange (volatile T *Element, T ExpectedValue, T NewValue)
 
template<typename T >
FORCEINLINEAndExchange (volatile T *Element, T AndValue)
 
template<typename T >
FORCEINLINEOrExchange (volatile T *Element, T OrValue)
 
template<typename T >
FORCEINLINEXorExchange (volatile T *Element, T XorValue)
 

Typedef Documentation

◆ TAtomicBaseType_T

template<typename T , bool bIsVoidPointer = TIsVoidPointer<T>::Value, bool bIsIntegral = TIsIntegral<T>::Value, bool bCanUsePlatformAtomics = TIsSupportedSize<sizeof(T)>::Value>
using UE::Core::Private::Atomic::TAtomicBaseType_T = typedef typename TAtomicBaseType<T, bIsVoidPointer, bIsIntegral, bCanUsePlatformAtomics>::Type

◆ TUnderlyingIntegerType_T

Function Documentation

◆ AddExchange() [1/2]

template<typename T , typename DiffType >
FORCEINLINE T * UE::Core::Private::Atomic::AddExchange ( T *volatile Element,
DiffType  Diff 
)

◆ AddExchange() [2/2]

template<typename T , typename DiffType >
FORCEINLINE T UE::Core::Private::Atomic::AddExchange ( volatile T *  Element,
DiffType  Diff 
)

◆ AndExchange()

template<typename T >
FORCEINLINE T UE::Core::Private::Atomic::AndExchange ( volatile T *  Element,
AndValue 
)

◆ CompareExchange()

template<typename T >
FORCEINLINE T UE::Core::Private::Atomic::CompareExchange ( volatile T *  Element,
ExpectedValue,
NewValue 
)

◆ DecrementExchange() [1/2]

template<typename T >
FORCEINLINE T * UE::Core::Private::Atomic::DecrementExchange ( T *volatile Element)

◆ DecrementExchange() [2/2]

template<typename T >
FORCEINLINE T UE::Core::Private::Atomic::DecrementExchange ( volatile T *  Element)

◆ Exchange()

template<typename T >
FORCEINLINE T UE::Core::Private::Atomic::Exchange ( volatile T *  Element,
Value 
)

◆ IncrementExchange() [1/2]

template<typename T >
FORCEINLINE T * UE::Core::Private::Atomic::IncrementExchange ( T *volatile Element)

◆ IncrementExchange() [2/2]

template<typename T >
FORCEINLINE T UE::Core::Private::Atomic::IncrementExchange ( volatile T *  Element)

◆ Load()

template<typename T >
FORCEINLINE T UE::Core::Private::Atomic::Load ( const volatile T *  Element)

◆ LoadRelaxed()

template<typename T >
FORCEINLINE T UE::Core::Private::Atomic::LoadRelaxed ( const volatile T *  Element)

◆ OrExchange()

template<typename T >
FORCEINLINE T UE::Core::Private::Atomic::OrExchange ( volatile T *  Element,
OrValue 
)

◆ Store()

template<typename T >
FORCEINLINE void UE::Core::Private::Atomic::Store ( const volatile T *  Element,
Value 
)

◆ StoreRelaxed()

template<typename T >
FORCEINLINE void UE::Core::Private::Atomic::StoreRelaxed ( const volatile T *  Element,
Value 
)

◆ SubExchange() [1/2]

template<typename T , typename DiffType >
FORCEINLINE T * UE::Core::Private::Atomic::SubExchange ( T *volatile Element,
DiffType  Diff 
)

◆ SubExchange() [2/2]

template<typename T , typename DiffType >
FORCEINLINE T UE::Core::Private::Atomic::SubExchange ( volatile T *  Element,
DiffType  Diff 
)

◆ XorExchange()

template<typename T >
FORCEINLINE T UE::Core::Private::Atomic::XorExchange ( volatile T *  Element,
XorValue 
)