JUCE  v5.4.1-191-g0ab5e696f
JUCE API
Looking for a senior C++ dev?
I'm looking for work. Hire me!
juce::Atomic< Type > Struct Template Referencefinal

A simple wrapper around std::atomic. More...

#include <juce_Atomic.h>

Inheritance diagram for juce::Atomic< Type >:
Collaboration diagram for juce::Atomic< Type >:

Public Types

using DiffType = typename AtomicHelpers::DiffTypeHelper< Type >::Type
 

Public Member Functions

 Atomic () noexcept
 Creates a new value, initialised to zero. More...
 
 Atomic (Type initialValue) noexcept
 Creates a new value, with a given initial value. More...
 
 Atomic (const Atomic &other) noexcept
 Copies another value (atomically). More...
 
 ~Atomic () noexcept
 Destructor. More...
 
bool compareAndSetBool (Type newValue, Type valueToCompare) noexcept
 Atomically compares this value with a target value, and if it is equal, sets this to be equal to a new value. More...
 
Type exchange (Type newValue) noexcept
 Atomically sets the current value, returning the value that was replaced. More...
 
Type get () const noexcept
 Atomically reads and returns the current value. More...
 
void memoryBarrier () noexcept
 Implements a memory read/write barrier. More...
 
Type operator++ () noexcept
 Atomically increments this value, returning the new value. More...
 
Type operator+= (DiffType amountToAdd) noexcept
 Atomically adds a number to this value, returning the new value. More...
 
Type operator-- () noexcept
 Atomically decrements this value, returning the new value. More...
 
Type operator-= (DiffType amountToSubtract) noexcept
 Atomically subtracts a number from this value, returning the new value. More...
 
Atomic< Type > & operator= (const Atomic &other) noexcept
 Copies another value into this one (atomically). More...
 
Atomic< Type > & operator= (Type newValue) noexcept
 Copies another value into this one (atomically). More...
 
void set (Type newValue) noexcept
 Atomically sets the current value. More...
 

Public Attributes

std::atomic< Type > value
 The std::atomic object that this class operates on. More...
 

Detailed Description

template<typename Type>
struct juce::Atomic< Type >

A simple wrapper around std::atomic.

{Core}

Member Typedef Documentation

◆ DiffType

template<typename Type>
using juce::Atomic< Type >::DiffType = typename AtomicHelpers::DiffTypeHelper<Type>::Type

Constructor & Destructor Documentation

◆ Atomic() [1/3]

template<typename Type>
juce::Atomic< Type >::Atomic ( )
inlinenoexcept

Creates a new value, initialised to zero.

◆ Atomic() [2/3]

template<typename Type>
juce::Atomic< Type >::Atomic ( Type  initialValue)
inlinenoexcept

Creates a new value, with a given initial value.

◆ Atomic() [3/3]

template<typename Type>
juce::Atomic< Type >::Atomic ( const Atomic< Type > &  other)
inlinenoexcept

Copies another value (atomically).

◆ ~Atomic()

template<typename Type>
juce::Atomic< Type >::~Atomic ( )
inlinenoexcept

Destructor.

Member Function Documentation

◆ compareAndSetBool()

template<typename Type>
bool juce::Atomic< Type >::compareAndSetBool ( Type  newValue,
Type  valueToCompare 
)
inlinenoexcept

Atomically compares this value with a target value, and if it is equal, sets this to be equal to a new value.

This operation is the atomic equivalent of doing this:

bool compareAndSetBool (Type newValue, Type valueToCompare)
{
if (get() == valueToCompare)
{
set (newValue);
return true;
}
return false;
}

Internally, this method calls std::atomic::compare_exchange_strong with memory_order_seq_cst (the strictest std::memory_order).

Returns
true if the comparison was true and the value was replaced; false if the comparison failed and the value was left unchanged.
See also
compareAndSetValue

Referenced by juce::ThreadLocalValue< Type >::get().

◆ exchange()

template<typename Type>
Type juce::Atomic< Type >::exchange ( Type  newValue)
inlinenoexcept

Atomically sets the current value, returning the value that was replaced.

◆ get()

template<typename Type>
Type juce::Atomic< Type >::get ( ) const
inlinenoexcept

◆ memoryBarrier()

template<typename Type>
void juce::Atomic< Type >::memoryBarrier ( )
inlinenoexcept

Implements a memory read/write barrier.

Internally this calls std::atomic_thread_fence with memory_order_seq_cst (the strictest std::memory_order).

◆ operator++()

template<typename Type>
Type juce::Atomic< Type >::operator++ ( )
inlinenoexcept

Atomically increments this value, returning the new value.

◆ operator+=()

template<typename Type>
Type juce::Atomic< Type >::operator+= ( DiffType  amountToAdd)
inlinenoexcept

Atomically adds a number to this value, returning the new value.

◆ operator--()

template<typename Type>
Type juce::Atomic< Type >::operator-- ( )
inlinenoexcept

Atomically decrements this value, returning the new value.

◆ operator-=()

template<typename Type>
Type juce::Atomic< Type >::operator-= ( DiffType  amountToSubtract)
inlinenoexcept

Atomically subtracts a number from this value, returning the new value.

◆ operator=() [1/2]

template<typename Type>
Atomic<Type>& juce::Atomic< Type >::operator= ( const Atomic< Type > &  other)
inlinenoexcept

Copies another value into this one (atomically).

◆ operator=() [2/2]

template<typename Type>
Atomic<Type>& juce::Atomic< Type >::operator= ( Type  newValue)
inlinenoexcept

Copies another value into this one (atomically).

◆ set()

template<typename Type>
void juce::Atomic< Type >::set ( Type  newValue)
inlinenoexcept

Atomically sets the current value.

Member Data Documentation

◆ value

template<typename Type>
std::atomic<Type> juce::Atomic< Type >::value

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