OpenShot Library | libopenshot-audio 0.2.0
juce::Atomic< Type > Struct Template Referencefinal

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

#include <juce_Atomic.h>

Public Types

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

Public Member Functions

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

Public Attributes

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

Detailed Description

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

A simple wrapper around std::atomic.

Definition at line 45 of file juce_Atomic.h.

Member Typedef Documentation

◆ DiffType

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

Definition at line 47 of file juce_Atomic.h.

Constructor & Destructor Documentation

◆ Atomic() [1/3]

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

Creates a new value, initialised to zero.

Definition at line 50 of file juce_Atomic.h.

◆ Atomic() [2/3]

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

Creates a new value, with a given initial value.

Definition at line 53 of file juce_Atomic.h.

◆ Atomic() [3/3]

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

Copies another value (atomically).

Definition at line 56 of file juce_Atomic.h.

◆ ~Atomic()

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

Destructor.

Definition at line 59 of file juce_Atomic.h.

Member Function Documentation

◆ get()

◆ set()

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

Atomically sets the current value.

Definition at line 71 of file juce_Atomic.h.

References juce::Atomic< Type >::value.

◆ exchange()

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

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

Definition at line 74 of file juce_Atomic.h.

References juce::Atomic< Type >::value.

◆ 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;
}
Holds a resizable array of primitive or copy-by-value objects.
Definition juce_Array.h:60
Type get() const noexcept
Atomically reads and returns the current value.
Definition juce_Atomic.h:68
void set(Type newValue) noexcept
Atomically sets the current value.
Definition juce_Atomic.h:71
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 ne...

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

Definition at line 100 of file juce_Atomic.h.

References juce::Atomic< Type >::value.

Referenced by juce::ThreadLocalValue< Type >::get(), and juce::AsyncUpdater::AsyncUpdaterMessage::messageCallback().

◆ operator=() [1/2]

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

Copies another value into this one (atomically).

Definition at line 106 of file juce_Atomic.h.

References juce::Atomic< Type >::value.

◆ operator=() [2/2]

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

Copies another value into this one (atomically).

Definition at line 113 of file juce_Atomic.h.

References juce::Atomic< Type >::value.

◆ operator+=()

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

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

Definition at line 120 of file juce_Atomic.h.

References juce::Atomic< Type >::value.

◆ operator-=()

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

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

Definition at line 123 of file juce_Atomic.h.

References juce::Atomic< Type >::value.

◆ operator++()

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

Atomically increments this value, returning the new value.

Definition at line 126 of file juce_Atomic.h.

References juce::Atomic< Type >::value.

◆ operator--()

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

Atomically decrements this value, returning the new value.

Definition at line 129 of file juce_Atomic.h.

References juce::Atomic< Type >::value.

◆ 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).

Definition at line 136 of file juce_Atomic.h.

Member Data Documentation

◆ value


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