Krita Source Code Documentation
Loading...
Searching...
No Matches
Atomic< T > Class Template Reference

#include <atomic.h>

+ Inheritance diagram for Atomic< T >:

Public Member Functions

 Atomic ()
 
 Atomic (const Atomic &other)
 
 Atomic (T value)
 
compareExchange (T expected, T desired, MemoryOrder memoryOrder)
 
bool compareExchangeStrong (T &expected, T desired, MemoryOrder memoryOrder)
 
bool compareExchangeWeak (T &expected, T desired, MemoryOrder success, MemoryOrder failure)
 
exchange (T desired, MemoryOrder memoryOrder)
 
fetchAdd (T operand, MemoryOrder memoryOrder)
 
fetchAnd (T operand, MemoryOrder memoryOrder)
 
fetchOr (T operand, MemoryOrder memoryOrder)
 
fetchSub (T operand, MemoryOrder memoryOrder)
 
load (MemoryOrder memoryOrder) const
 
loadNonatomic () const
 
void store (T value, MemoryOrder memoryOrder)
 
void storeNonatomic (T value)
 

Private Member Functions

operator= (T value)
 

Detailed Description

template<typename T>
class Atomic< T >

Definition at line 66 of file atomic.h.

Constructor & Destructor Documentation

◆ Atomic() [1/3]

template<typename T >
Atomic< T >::Atomic ( )
inline

Definition at line 72 of file atomic.h.

73 {
74 }

◆ Atomic() [2/3]

template<typename T >
Atomic< T >::Atomic ( T value)
inline

Definition at line 76 of file atomic.h.

76 : std::atomic<T>(value)
77 {
78 }
float value(const T *src, size_t ch)

◆ Atomic() [3/3]

template<typename T >
Atomic< T >::Atomic ( const Atomic< T > & other)
inline

Definition at line 80 of file atomic.h.

80 : std::atomic<T>(other.loadNonatomic())
81 {
82 }
T loadNonatomic() const
Definition atomic.h:84

Member Function Documentation

◆ compareExchange()

template<typename T >
T Atomic< T >::compareExchange ( T expected,
T desired,
MemoryOrder memoryOrder )
inline

Definition at line 104 of file atomic.h.

105 {
106 std::atomic<T>::compare_exchange_strong(expected, desired, (std::memory_order) memoryOrder);
107 return expected; // modified by reference by compare_exchange_strong
108 }

◆ compareExchangeStrong()

template<typename T >
bool Atomic< T >::compareExchangeStrong ( T & expected,
T desired,
MemoryOrder memoryOrder )
inline

Definition at line 110 of file atomic.h.

111 {
112 return std::atomic<T>::compare_exchange_strong(expected, desired, (std::memory_order) memoryOrder);
113 }

◆ compareExchangeWeak()

template<typename T >
bool Atomic< T >::compareExchangeWeak ( T & expected,
T desired,
MemoryOrder success,
MemoryOrder failure )
inline

Definition at line 115 of file atomic.h.

116 {
117 return std::atomic<T>::compare_exchange_weak(expected, desired, (std::memory_order) success, (std::memory_order) failure);
118 }

◆ exchange()

template<typename T >
T Atomic< T >::exchange ( T desired,
MemoryOrder memoryOrder )
inline

Definition at line 120 of file atomic.h.

121 {
122 return std::atomic<T>::exchange(desired, (std::memory_order) memoryOrder);
123 }

◆ fetchAdd()

template<typename T >
T Atomic< T >::fetchAdd ( T operand,
MemoryOrder memoryOrder )
inline

Definition at line 125 of file atomic.h.

126 {
127 return std::atomic<T>::fetch_add(operand, (std::memory_order) memoryOrder);
128 }

◆ fetchAnd()

template<typename T >
T Atomic< T >::fetchAnd ( T operand,
MemoryOrder memoryOrder )
inline

Definition at line 135 of file atomic.h.

136 {
137 return std::atomic<T>::fetch_and(operand, (std::memory_order) memoryOrder);
138 }

◆ fetchOr()

template<typename T >
T Atomic< T >::fetchOr ( T operand,
MemoryOrder memoryOrder )
inline

Definition at line 140 of file atomic.h.

141 {
142 return std::atomic<T>::fetch_or(operand, (std::memory_order) memoryOrder);
143 }

◆ fetchSub()

template<typename T >
T Atomic< T >::fetchSub ( T operand,
MemoryOrder memoryOrder )
inline

Definition at line 130 of file atomic.h.

131 {
132 return std::atomic<T>::fetch_sub(operand, (std::memory_order) memoryOrder);
133 }

◆ load()

template<typename T >
T Atomic< T >::load ( MemoryOrder memoryOrder) const
inline

Definition at line 89 of file atomic.h.

90 {
91 return std::atomic<T>::load((std::memory_order) memoryOrder);
92 }

◆ loadNonatomic()

template<typename T >
T Atomic< T >::loadNonatomic ( ) const
inline

Definition at line 84 of file atomic.h.

85 {
86 return std::atomic<T>::load(std::memory_order_relaxed);
87 }

◆ operator=()

template<typename T >
T Atomic< T >::operator= ( T value)
private

◆ store()

template<typename T >
void Atomic< T >::store ( T value,
MemoryOrder memoryOrder )
inline

Definition at line 99 of file atomic.h.

100 {
101 return std::atomic<T>::store(value, (std::memory_order) memoryOrder);
102 }

References value().

◆ storeNonatomic()

template<typename T >
void Atomic< T >::storeNonatomic ( T value)
inline

Definition at line 94 of file atomic.h.

95 {
96 return std::atomic<T>::store(value, std::memory_order_relaxed);
97 }

References value().


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