UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Atomic.h File Reference
#include "HAL/ThreadSafeCounter.h"
#include "HAL/ThreadSafeCounter64.h"
#include "Templates/IsIntegral.h"
#include "Templates/IsTrivial.h"
#include "Traits/IntType.h"
#include <atomic>

Go to the source code of this file.

Classes

struct  UE::Core::Private::Atomic::TIsSupportedSize< Size >
 
struct  UE::Core::Private::Atomic::TIsVoidPointer< T >
 
struct  UE::Core::Private::Atomic::TIsVoidPointer< void * >
 
struct  UE::Core::Private::Atomic::TIsVoidPointer< const void * >
 
struct  UE::Core::Private::Atomic::TIsVoidPointer< volatile void * >
 
struct  UE::Core::Private::Atomic::TIsVoidPointer< const volatile void * >
 
struct  UE::Core::Private::Atomic::TAtomicBaseType< T, bIsVoidPointer, bIsIntegral, bCanUsePlatformAtomics >
 
struct  UE::Core::Private::Atomic::TAtomicBaseType< T, false, false, false >
 
struct  UE::Core::Private::Atomic::TAtomicBaseType< T *, false, false, true >
 
struct  UE::Core::Private::Atomic::TAtomicBaseType< T, false, true, true >
 
struct  TAtomicBase_Basic< T >
 
struct  TAtomicBase_Arithmetic< T, DiffType >
 
struct  TAtomicBase_Pointer< T >
 
struct  TAtomicBase_Integral< T >
 
class  TAtomic< T >
 

Namespaces

namespace  UE
 
namespace  UE::Core
 
namespace  UE::Core::Private
 implementation
 
namespace  UE::Core::Private::Atomic
 

Typedefs

template<typename T >
using UE::Core::Private::Atomic::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 UE::Core::Private::Atomic::TAtomicBaseType_T = typename TAtomicBaseType< T, bIsVoidPointer, bIsIntegral, bCanUsePlatformAtomics >::Type
 

Enumerations

enum class  EMemoryOrder { Relaxed , SequentiallyConsistent , Count }
 

Functions

template<typename T >
FORCEINLINEUE::Core::Private::Atomic::LoadRelaxed (const volatile T *Element)
 
template<typename T >
FORCEINLINEUE::Core::Private::Atomic::Load (const volatile T *Element)
 
template<typename T >
FORCEINLINE void UE::Core::Private::Atomic::StoreRelaxed (const volatile T *Element, T Value)
 
template<typename T >
FORCEINLINE void UE::Core::Private::Atomic::Store (const volatile T *Element, T Value)
 
template<typename T >
FORCEINLINEUE::Core::Private::Atomic::Exchange (volatile T *Element, T Value)
 
template<typename T >
FORCEINLINEUE::Core::Private::Atomic::IncrementExchange (volatile T *Element)
 
template<typename T >
FORCEINLINE T * UE::Core::Private::Atomic::IncrementExchange (T *volatile *Element)
 
template<typename T , typename DiffType >
FORCEINLINEUE::Core::Private::Atomic::AddExchange (volatile T *Element, DiffType Diff)
 
template<typename T , typename DiffType >
FORCEINLINE T * UE::Core::Private::Atomic::AddExchange (T *volatile *Element, DiffType Diff)
 
template<typename T >
FORCEINLINEUE::Core::Private::Atomic::DecrementExchange (volatile T *Element)
 
template<typename T >
FORCEINLINE T * UE::Core::Private::Atomic::DecrementExchange (T *volatile *Element)
 
template<typename T , typename DiffType >
FORCEINLINEUE::Core::Private::Atomic::SubExchange (volatile T *Element, DiffType Diff)
 
template<typename T , typename DiffType >
FORCEINLINE T * UE::Core::Private::Atomic::SubExchange (T *volatile *Element, DiffType Diff)
 
template<typename T >
FORCEINLINEUE::Core::Private::Atomic::CompareExchange (volatile T *Element, T ExpectedValue, T NewValue)
 
template<typename T >
FORCEINLINEUE::Core::Private::Atomic::AndExchange (volatile T *Element, T AndValue)
 
template<typename T >
FORCEINLINEUE::Core::Private::Atomic::OrExchange (volatile T *Element, T OrValue)
 
template<typename T >
FORCEINLINEUE::Core::Private::Atomic::XorExchange (volatile T *Element, T XorValue)
 

Enumeration Type Documentation

◆ EMemoryOrder

enum class EMemoryOrder
strong
Enumerator
Relaxed 
SequentiallyConsistent 
Count