libstdc++
Atomics

Classes

struct  std::__atomic_base< _ITp >
 
struct  std::__atomic_base< _PTp * >
 
struct  std::__atomic_flag_base
 
struct  std::atomic< _Tp >
 
struct  std::atomic< _Tp * >
 
struct  std::atomic< bool >
 
struct  std::atomic< char >
 
struct  std::atomic< char16_t >
 
struct  std::atomic< char32_t >
 
struct  std::atomic< int >
 
struct  std::atomic< long >
 
struct  std::atomic< long long >
 
struct  std::atomic< short >
 
struct  std::atomic< signed char >
 
struct  std::atomic< unsigned char >
 
struct  std::atomic< unsigned int >
 
struct  std::atomic< unsigned long >
 
struct  std::atomic< unsigned long long >
 
struct  std::atomic< unsigned short >
 
struct  std::atomic< wchar_t >
 
struct  std::atomic_flag
 

Macros

#define ATOMIC_BOOL_LOCK_FREE
 
#define ATOMIC_CHAR16_T_LOCK_FREE
 
#define ATOMIC_CHAR32_T_LOCK_FREE
 
#define ATOMIC_CHAR_LOCK_FREE
 
#define ATOMIC_FLAG_INIT
 
#define ATOMIC_INT_LOCK_FREE
 
#define ATOMIC_LLONG_LOCK_FREE
 
#define ATOMIC_LONG_LOCK_FREE
 
#define ATOMIC_POINTER_LOCK_FREE
 
#define ATOMIC_SHORT_LOCK_FREE
 
#define ATOMIC_VAR_INIT(_VI)
 
#define ATOMIC_WCHAR_T_LOCK_FREE
 

Typedefs

typedef unsigned char std::__atomic_flag_data_type
 
typedef atomic< bool > std::atomic_bool
 
typedef atomic< char > std::atomic_char
 
typedef atomic< char16_t > std::atomic_char16_t
 
typedef atomic< char32_t > std::atomic_char32_t
 
typedef atomic< int > std::atomic_int
 
typedef atomic< int_fast16_t > std::atomic_int_fast16_t
 
typedef atomic< int_fast32_t > std::atomic_int_fast32_t
 
typedef atomic< int_fast64_t > std::atomic_int_fast64_t
 
typedef atomic< int_fast8_t > std::atomic_int_fast8_t
 
typedef atomic< int_least16_t > std::atomic_int_least16_t
 
typedef atomic< int_least32_t > std::atomic_int_least32_t
 
typedef atomic< int_least64_t > std::atomic_int_least64_t
 
typedef atomic< int_least8_t > std::atomic_int_least8_t
 
typedef atomic< intmax_t > std::atomic_intmax_t
 
typedef atomic< intptr_t > std::atomic_intptr_t
 
typedef atomic< long long > std::atomic_llong
 
typedef atomic< long > std::atomic_long
 
typedef atomic< ptrdiff_t > std::atomic_ptrdiff_t
 
typedef atomic< signed char > std::atomic_schar
 
typedef atomic< short > std::atomic_short
 
typedef atomic< size_t > std::atomic_size_t
 
typedef atomic< unsigned char > std::atomic_uchar
 
typedef atomic< unsigned int > std::atomic_uint
 
typedef atomic< uint_fast16_t > std::atomic_uint_fast16_t
 
typedef atomic< uint_fast32_t > std::atomic_uint_fast32_t
 
typedef atomic< uint_fast64_t > std::atomic_uint_fast64_t
 
typedef atomic< uint_fast8_t > std::atomic_uint_fast8_t
 
typedef atomic< uint_least16_t > std::atomic_uint_least16_t
 
typedef atomic< uint_least32_t > std::atomic_uint_least32_t
 
typedef atomic< uint_least64_t > std::atomic_uint_least64_t
 
typedef atomic< uint_least8_t > std::atomic_uint_least8_t
 
typedef atomic< uintmax_t > std::atomic_uintmax_t
 
typedef atomic< uintptr_t > std::atomic_uintptr_t
 
typedef atomic< unsigned long long > std::atomic_ullong
 
typedef atomic< unsigned long > std::atomic_ulong
 
typedef atomic< unsigned short > std::atomic_ushort
 
typedef atomic< wchar_t > std::atomic_wchar_t
 
typedef enum std::memory_order std::memory_order
 

Enumerations

enum  __memory_order_modifier { __memory_order_mask, __memory_order_modifier_mask, __memory_order_hle_acquire, __memory_order_hle_release }
 
enum  std::memory_order {
  memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release,
  memory_order_acq_rel, memory_order_seq_cst
}
 

Functions

 std::__attribute__ ((__always_inline__)) void atomic_thread_fence(memory_order __m) noexcept
 
constexpr memory_order std::__cmpexch_failure_order (memory_order __m) noexcept
 
constexpr memory_order std::__cmpexch_failure_order2 (memory_order __m) noexcept
 
template<typename _ITp >
bool std::atomic_compare_exchange_strong (atomic< _ITp > *__a, _ITp *__i1, _ITp __i2) noexcept
 
template<typename _ITp >
bool std::atomic_compare_exchange_strong (volatile atomic< _ITp > *__a, _ITp *__i1, _ITp __i2) noexcept
 
template<typename _ITp >
bool std::atomic_compare_exchange_strong_explicit (atomic< _ITp > *__a, _ITp *__i1, _ITp __i2, memory_order __m1, memory_order __m2) noexcept
 
template<typename _ITp >
bool std::atomic_compare_exchange_strong_explicit (volatile atomic< _ITp > *__a, _ITp *__i1, _ITp __i2, memory_order __m1, memory_order __m2) noexcept
 
template<typename _ITp >
bool std::atomic_compare_exchange_weak (atomic< _ITp > *__a, _ITp *__i1, _ITp __i2) noexcept
 
template<typename _ITp >
bool std::atomic_compare_exchange_weak (volatile atomic< _ITp > *__a, _ITp *__i1, _ITp __i2) noexcept
 
template<typename _ITp >
bool std::atomic_compare_exchange_weak_explicit (atomic< _ITp > *__a, _ITp *__i1, _ITp __i2, memory_order __m1, memory_order __m2) noexcept
 
template<typename _ITp >
bool std::atomic_compare_exchange_weak_explicit (volatile atomic< _ITp > *__a, _ITp *__i1, _ITp __i2, memory_order __m1, memory_order __m2) noexcept
 
template<typename _ITp >
_ITp std::atomic_exchange (atomic< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp std::atomic_exchange (volatile atomic< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp std::atomic_exchange_explicit (atomic< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_exchange_explicit (volatile atomic< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_add (__atomic_base< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_add (volatile __atomic_base< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp * std::atomic_fetch_add (volatile atomic< _ITp * > *__a, ptrdiff_t __d) noexcept
 
template<typename _ITp >
_ITp * std::atomic_fetch_add (atomic< _ITp * > *__a, ptrdiff_t __d) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_add_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_add_explicit (volatile __atomic_base< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp * std::atomic_fetch_add_explicit (atomic< _ITp * > *__a, ptrdiff_t __d, memory_order __m) noexcept
 
template<typename _ITp >
_ITp * std::atomic_fetch_add_explicit (volatile atomic< _ITp * > *__a, ptrdiff_t __d, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_and (__atomic_base< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_and (volatile __atomic_base< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_and_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_and_explicit (volatile __atomic_base< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_or (__atomic_base< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_or (volatile __atomic_base< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_or_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_or_explicit (volatile __atomic_base< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_sub (__atomic_base< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_sub (volatile __atomic_base< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp * std::atomic_fetch_sub (volatile atomic< _ITp * > *__a, ptrdiff_t __d) noexcept
 
template<typename _ITp >
_ITp * std::atomic_fetch_sub (atomic< _ITp * > *__a, ptrdiff_t __d) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_sub_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_sub_explicit (volatile __atomic_base< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp * std::atomic_fetch_sub_explicit (volatile atomic< _ITp * > *__a, ptrdiff_t __d, memory_order __m) noexcept
 
template<typename _ITp >
_ITp * std::atomic_fetch_sub_explicit (atomic< _ITp * > *__a, ptrdiff_t __d, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_xor (__atomic_base< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_xor (volatile __atomic_base< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_xor_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_fetch_xor_explicit (volatile __atomic_base< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
void std::atomic_flag_clear (atomic_flag *__a) noexcept
 
void std::atomic_flag_clear (volatile atomic_flag *__a) noexcept
 
void std::atomic_flag_clear_explicit (atomic_flag *__a, memory_order __m) noexcept
 
void std::atomic_flag_clear_explicit (volatile atomic_flag *__a, memory_order __m) noexcept
 
bool std::atomic_flag_test_and_set (atomic_flag *__a) noexcept
 
bool std::atomic_flag_test_and_set (volatile atomic_flag *__a) noexcept
 
bool std::atomic_flag_test_and_set_explicit (atomic_flag *__a, memory_order __m) noexcept
 
bool std::atomic_flag_test_and_set_explicit (volatile atomic_flag *__a, memory_order __m) noexcept
 
template<typename _ITp >
void std::atomic_init (atomic< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
void std::atomic_init (volatile atomic< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
bool std::atomic_is_lock_free (const atomic< _ITp > *__a) noexcept
 
template<typename _ITp >
bool std::atomic_is_lock_free (const volatile atomic< _ITp > *__a) noexcept
 
template<typename _ITp >
_ITp std::atomic_load (const atomic< _ITp > *__a) noexcept
 
template<typename _ITp >
_ITp std::atomic_load (const volatile atomic< _ITp > *__a) noexcept
 
template<typename _ITp >
_ITp std::atomic_load_explicit (const atomic< _ITp > *__a, memory_order __m) noexcept
 
template<typename _ITp >
_ITp std::atomic_load_explicit (const volatile atomic< _ITp > *__a, memory_order __m) noexcept
 
template<typename _ITp >
void std::atomic_store (atomic< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
void std::atomic_store (volatile atomic< _ITp > *__a, _ITp __i) noexcept
 
template<typename _ITp >
void std::atomic_store_explicit (atomic< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _ITp >
void std::atomic_store_explicit (volatile atomic< _ITp > *__a, _ITp __i, memory_order __m) noexcept
 
template<typename _Tp >
_Tp std::kill_dependency (_Tp __y) noexcept
 
constexpr memory_order std::operator& (memory_order __m, __memory_order_modifier __mod)
 
constexpr memory_order std::operator| (memory_order __m, __memory_order_modifier __mod)
 

Detailed Description

Components for performing atomic operations.

Macro Definition Documentation

#define ATOMIC_BOOL_LOCK_FREE

Lock-free property.

0 indicates that the types are never lock-free. 1 indicates that the types are sometimes lock-free. 2 indicates that the types are always lock-free.

Definition at line 49 of file atomic_lockfree_defines.h.

Typedef Documentation

typedef atomic<bool> std::atomic_bool

atomic_bool

Definition at line 776 of file atomic.

typedef atomic<char> std::atomic_char

atomic_char

Definition at line 779 of file atomic.

typedef atomic<char16_t> std::atomic_char16_t

atomic_char16_t

Definition at line 815 of file atomic.

typedef atomic<char32_t> std::atomic_char32_t

atomic_char32_t

Definition at line 818 of file atomic.

typedef atomic<int> std::atomic_int

atomic_int

Definition at line 794 of file atomic.

typedef atomic<int_fast16_t> std::atomic_int_fast16_t

atomic_int_fast16_t

Definition at line 853 of file atomic.

typedef atomic<int_fast32_t> std::atomic_int_fast32_t

atomic_int_fast32_t

Definition at line 859 of file atomic.

typedef atomic<int_fast64_t> std::atomic_int_fast64_t

atomic_int_fast64_t

Definition at line 865 of file atomic.

typedef atomic<int_fast8_t> std::atomic_int_fast8_t

atomic_int_fast8_t

Definition at line 847 of file atomic.

typedef atomic<int_least16_t> std::atomic_int_least16_t

atomic_int_least16_t

Definition at line 828 of file atomic.

typedef atomic<int_least32_t> std::atomic_int_least32_t

atomic_int_least32_t

Definition at line 834 of file atomic.

typedef atomic<int_least64_t> std::atomic_int_least64_t

atomic_int_least64_t

Definition at line 840 of file atomic.

typedef atomic<int_least8_t> std::atomic_int_least8_t

atomic_int_least8_t

Definition at line 822 of file atomic.

typedef atomic<intmax_t> std::atomic_intmax_t

atomic_intmax_t

Definition at line 881 of file atomic.

typedef atomic<intptr_t> std::atomic_intptr_t

atomic_intptr_t

Definition at line 872 of file atomic.

typedef atomic<long long> std::atomic_llong

atomic_llong

Definition at line 806 of file atomic.

typedef atomic<long> std::atomic_long

atomic_long

Definition at line 800 of file atomic.

typedef atomic<ptrdiff_t> std::atomic_ptrdiff_t

atomic_ptrdiff_t

Definition at line 887 of file atomic.

typedef atomic<signed char> std::atomic_schar

atomic_schar

Definition at line 782 of file atomic.

typedef atomic<short> std::atomic_short

atomic_short

Definition at line 788 of file atomic.

typedef atomic<size_t> std::atomic_size_t

atomic_size_t

Definition at line 878 of file atomic.

typedef atomic<unsigned char> std::atomic_uchar

atomic_uchar

Definition at line 785 of file atomic.

typedef atomic<unsigned int> std::atomic_uint

atomic_uint

Definition at line 797 of file atomic.

typedef atomic<uint_fast16_t> std::atomic_uint_fast16_t

atomic_uint_fast16_t

Definition at line 856 of file atomic.

typedef atomic<uint_fast32_t> std::atomic_uint_fast32_t

atomic_uint_fast32_t

Definition at line 862 of file atomic.

typedef atomic<uint_fast64_t> std::atomic_uint_fast64_t

atomic_uint_fast64_t

Definition at line 868 of file atomic.

typedef atomic<uint_fast8_t> std::atomic_uint_fast8_t

atomic_uint_fast8_t

Definition at line 850 of file atomic.

typedef atomic<uint_least16_t> std::atomic_uint_least16_t

atomic_uint_least16_t

Definition at line 831 of file atomic.

typedef atomic<uint_least32_t> std::atomic_uint_least32_t

atomic_uint_least32_t

Definition at line 837 of file atomic.

typedef atomic<uint_least64_t> std::atomic_uint_least64_t

atomic_uint_least64_t

Definition at line 843 of file atomic.

typedef atomic<uint_least8_t> std::atomic_uint_least8_t

atomic_uint_least8_t

Definition at line 825 of file atomic.

typedef atomic<uintmax_t> std::atomic_uintmax_t

atomic_uintmax_t

Definition at line 884 of file atomic.

typedef atomic<uintptr_t> std::atomic_uintptr_t

atomic_uintptr_t

Definition at line 875 of file atomic.

typedef atomic<unsigned long long> std::atomic_ullong

atomic_ullong

Definition at line 809 of file atomic.

typedef atomic<unsigned long> std::atomic_ulong

atomic_ulong

Definition at line 803 of file atomic.

typedef atomic<unsigned short> std::atomic_ushort

atomic_ushort

Definition at line 791 of file atomic.

typedef atomic<wchar_t> std::atomic_wchar_t

atomic_wchar_t

Definition at line 812 of file atomic.

Enumeration for memory_order.

Enumeration Type Documentation

Enumeration for memory_order.

Definition at line 55 of file atomic_base.h.

Function Documentation

template<typename _Tp >
_Tp std::kill_dependency ( _Tp  __y)
inlinenoexcept

kill_dependency

Definition at line 111 of file atomic_base.h.