# Atomics

## Classes

- struct std::atomic< _Tp >
    atomic /// 29.4.3, Generic atomic type, primary class template. More...
- struct std::atomic< _Tp * >
    Partial specialization for pointer types. More...
- struct std::atomic< bool >
    Explicit specialization for bool. More...
- struct std::atomic< char >
    Explicit specialization for char. More...
- struct std::atomic< char16_t >
    Explicit specialization for char16_t. More...
- struct std::atomic< char32_t >
    Explicit specialization for char32_t. More...
- struct std::atomic< int >
    Explicit specialization for int. More...
- struct std::atomic< long >
    Explicit specialization for long. More...
- struct std::atomic< long long >
    Explicit specialization for long long. More...
- struct std::atomic< short >
    Explicit specialization for short. More...
- struct std::atomic< signed char >
    Explicit specialization for signed char. More...
- struct std::atomic< unsigned char >
    Explicit specialization for unsigned char. More...
- struct std::atomic< unsigned int >
    Explicit specialization for unsigned int. More...
- struct std::atomic< unsigned long >
    Explicit specialization for unsigned long. More...
- struct std::atomic< unsigned long long >
    Explicit specialization for unsigned long long. More...
- struct std::atomic< unsigned short >
    Explicit specialization for unsigned short. More...
- struct std::atomic< void * >
    Explicit specialization for void*. More...
- struct std::atomic< wchar_t >
    Explicit specialization for wchar_t. More...

## Defines

- #define _ATOMIC_CMPEXCHNG_(__a, __e, __m, __x)
- #define _ATOMIC_LOAD_(__a, __x)
- #define _ATOMIC_MODIFY_(__a, __o, __m, __x)
- #define _ATOMIC_STORE_(__a, __m, __x)
- #define _GLIBCXX_ATOMIC_NAMESPACE
- #define _GLIBCXX_ATOMIC_PROPERTY
- #define ATOMIC_ADDRESS_LOCK_FREE
- #define ATOMIC_FLAG_INIT
- #define ATOMIC_INTEGRAL_LOCK_FREE

## Typedefs

- typedef struct
  std::__atomic_flag_base std::__atomic_flag_base
- typedef __atomic_base< char > atomic_char
- typedef __atomic_base< char16_t > atomic_char16_t
- typedef __atomic_base< char32_t > atomic_char32_t
- typedef __atomic_base< int > atomic_int
- typedef atomic_short std::atomic_int_fast16_t
- typedef atomic_int std::atomic_int_fast32_t
- typedef atomic_llong std::atomic_int_fast64_t
- typedef atomic_schar std::atomic_int_fast8_t
- typedef atomic_short std::atomic_int_least16_t
- typedef atomic_int std::atomic_int_least32_t
- typedef atomic_llong std::atomic_int_least64_t
- typedef atomic_schar std::atomic_int_least8_t
- typedef atomic_llong std::atomic_intmax_t
- typedef atomic_long std::atomic_intptr_t
- typedef __atomic_base< long long > atomic_llong
- typedef __atomic_base< long > atomic_long
- typedef atomic_long std::atomic_ptrdiff_t
- typedef __atomic_base< signed
  char > atomic_schar
- typedef __atomic_base< short > atomic_short
- typedef atomic_ulong std::atomic_size_t
- typedef atomic_long std::atomic_ssize_t
- typedef __atomic_base
  < unsigned char > atomic_uchar
- typedef __atomic_base
  < unsigned int > atomic_uint
- typedef atomic_ushort std::atomic_uint_fast16_t
- typedef atomic_uint std::atomic_uint_fast32_t
- typedef atomic_ullong std::atomic_uint_fast64_t
- typedef atomic_uchar std::atomic_uint_fast8_t
- typedef atomic_ushort std::atomic_uint_least16_t
- typedef atomic_uint std::atomic_uint_least32_t
- typedef atomic_ullong std::atomic_uint_least64_t
- typedef atomic_uchar std::atomic_uint_least8_t
- typedef atomic_ullong std::atomic_uintmax_t
- typedef atomic_ulong std::atomic_uintptr_t
- typedef __atomic_base
  < unsigned long long > atomic_ullong
- typedef __atomic_base
  < unsigned long > atomic_ulong
- typedef __atomic_base
  < unsigned short > atomic_ushort
- typedef __atomic_base< wchar_t > atomic_wchar_t
- typedef enum std::memory_order std::memory_order

## Enumerations

- 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

- void std::__atomic_flag_wait_explicit (__atomic_flag_base *, memory_order) _GLIBCXX_NOTHROW
- std::__attribute__ ((__const__)) __atomic_flag_base *__atomic_flag_for_address(const void *__z) _GLIBCXX_NOTHROW
- memory_order std::__calculate_memory_order (memory_order __m)
- template<typename _ITp > bool std::atomic_compare_exchange_strong (__atomic_base< _ITp > *__a, _ITp *__i1, _ITp __i2)
- bool std::atomic_compare_exchange_strong (atomic_address *__a, void **__v1, void *__v2)
- bool std::atomic_compare_exchange_strong (atomic_bool *__a, bool *__i1, bool __i2)
- template<typename _ITp > bool std::atomic_compare_exchange_strong_explicit (__atomic_base< _ITp > *__a, _ITp *__i1, _ITp __i2, memory_order __m1, memory_order __m2)
- bool std::atomic_compare_exchange_strong_explicit (atomic_address *__a, void **__v1, void *__v2, memory_order __m1, memory_order __m2)
- bool std::atomic_compare_exchange_strong_explicit (atomic_bool *__a, bool *__i1, bool __i2, memory_order __m1, memory_order __m2)
- template<typename _ITp > bool std::atomic_compare_exchange_weak (__atomic_base< _ITp > *__a, _ITp *__i1, _ITp __i2)
- bool std::atomic_compare_exchange_weak (atomic_address *__a, void **__v1, void *__v2)
- bool std::atomic_compare_exchange_weak (atomic_bool *__a, bool *__i1, bool __i2)
- template<typename _ITp > bool std::atomic_compare_exchange_weak_explicit (__atomic_base< _ITp > *__a, _ITp *__i1, _ITp __i2, memory_order __m1, memory_order __m2)
- bool std::atomic_compare_exchange_weak_explicit (atomic_bool *__a, bool *__i1, bool __i2, memory_order __m1, memory_order __m2)
- bool std::atomic_compare_exchange_weak_explicit (atomic_address *__a, void **__v1, void *__v2, memory_order __m1, memory_order __m2)
- void * std::atomic_exchange (atomic_address *__a, void *__v)
- template<typename _ITp > _ITp std::atomic_exchange (__atomic_base< _ITp > *__a, _ITp __i)
- bool std::atomic_exchange (atomic_bool *__a, bool __i)
- template<typename _ITp > _ITp std::atomic_exchange_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m)
- void * std::atomic_exchange_explicit (atomic_address *__a, void *__v, memory_order __m)
- bool std::atomic_exchange_explicit (atomic_bool *__a, bool __i, memory_order __m)
- void * std::atomic_fetch_add (atomic_address *__a, ptrdiff_t __d)
- template<typename _ITp > _ITp std::atomic_fetch_add (__atomic_base< _ITp > *__a, _ITp __i)
- void * std::atomic_fetch_add_explicit (atomic_address *__a, ptrdiff_t __d, memory_order __m)
- template<typename _ITp > _ITp std::atomic_fetch_add_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m)
- template<typename _ITp > _ITp std::atomic_fetch_and (__atomic_base< _ITp > *__a, _ITp __i)
- template<typename _ITp > _ITp std::atomic_fetch_and_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m)
- template<typename _ITp > _ITp std::atomic_fetch_or (__atomic_base< _ITp > *__a, _ITp __i)
- template<typename _ITp > _ITp std::atomic_fetch_or_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m)
- void * std::atomic_fetch_sub (atomic_address *__a, ptrdiff_t __d)
- template<typename _ITp > _ITp std::atomic_fetch_sub (__atomic_base< _ITp > *__a, _ITp __i)
- template<typename _ITp > _ITp std::atomic_fetch_sub_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m)
- void * std::atomic_fetch_sub_explicit (atomic_address *__a, ptrdiff_t __d, memory_order __m)
- template<typename _ITp > _ITp std::atomic_fetch_xor (__atomic_base< _ITp > *__a, _ITp __i)
- template<typename _ITp > _ITp std::atomic_fetch_xor_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m)
- void std::atomic_flag_clear (__atomic_flag_base *__a)
- void std::atomic_flag_clear_explicit (atomic_flag *__a, memory_order __m)
- void std::atomic_flag_clear_explicit (__atomic_flag_base *, memory_order) _GLIBCXX_NOTHROW
- bool std::atomic_flag_test_and_set (__atomic_flag_base *__a)
- bool std::atomic_flag_test_and_set_explicit (__atomic_flag_base *, memory_order) _GLIBCXX_NOTHROW
- bool std::atomic_flag_test_and_set_explicit (atomic_flag *__a, memory_order __m)
- template<typename _ITp > bool std::atomic_is_lock_free (const __atomic_base< _ITp > *__a)
- bool std::atomic_is_lock_free (const atomic_address *__a)
- bool std::atomic_is_lock_free (const atomic_bool *__a)
- void * std::atomic_load (const atomic_address *__a)
- template<typename _ITp > _ITp std::atomic_load (const __atomic_base< _ITp > *__a)
- bool std::atomic_load (const atomic_bool *__a)
- template<typename _ITp > _ITp std::atomic_load_explicit (const __atomic_base< _ITp > *__a, memory_order __m)
- void * std::atomic_load_explicit (const atomic_address *__a, memory_order __m)
- bool std::atomic_load_explicit (const atomic_bool *__a, memory_order __m)
- void std::atomic_store (atomic_address *__a, void *__v)
- template<typename _ITp > void std::atomic_store (__atomic_base< _ITp > *__a, _ITp __i)
- void std::atomic_store (atomic_bool *__a, bool __i)
- void std::atomic_store_explicit (atomic_bool *__a, bool __i, memory_order __m)
- template<typename _ITp > void std::atomic_store_explicit (__atomic_base< _ITp > *__a, _ITp __i, memory_order __m)
- void std::atomic_store_explicit (atomic_address *__a, void *__v, memory_order __m)
- bool std::atomic< _Tp * >::compare_exchange_strong (_Tp *&, _Tp *, memory_order, memory_order)
- bool std::atomic< _Tp * >::compare_exchange_strong (_Tp *&, _Tp *, memory_order=memory_order_seq_cst)
- bool std::atomic< _Tp * >::compare_exchange_weak (_Tp *&, _Tp *, memory_order, memory_order)
- bool std::atomic< _Tp * >::compare_exchange_weak (_Tp *&, _Tp *, memory_order=memory_order_seq_cst)
- _Tp * std::atomic< _Tp * >::fetch_add (ptrdiff_t, memory_order=memory_order_seq_cst)
- _Tp * std::atomic< _Tp * >::fetch_sub (ptrdiff_t, memory_order=memory_order_seq_cst)
- template<typename _Tp > _Tp std::kill_dependency (_Tp __y)

## Detailed Description

Components for performing atomic operations.

## Define Documentation

#define _GLIBCXX_ATOMIC_PROPERTY

29.2 Lock-free Property

Definition at line 68 of file atomic_base.h.

## Typedef Documentation

typedef __atomic_base<char> atomic_char

atomic_char

Definition at line 71 of file atomicfwd_cxx.h.

typedef __atomic_base<char16_t> atomic_char16_t

atomic_char16_t

Definition at line 107 of file atomicfwd_cxx.h.

typedef __atomic_base<char32_t> atomic_char32_t

atomic_char32_t

Definition at line 110 of file atomicfwd_cxx.h.

typedef __atomic_base<int> atomic_int

atomic_int

Definition at line 86 of file atomicfwd_cxx.h.

typedef __atomic_base<long long> atomic_llong

atomic_llong

Definition at line 98 of file atomicfwd_cxx.h.

typedef __atomic_base<long> atomic_long

atomic_long

Definition at line 92 of file atomicfwd_cxx.h.

typedef __atomic_base<signed char> atomic_schar

atomic_schar

Definition at line 74 of file atomicfwd_cxx.h.

typedef __atomic_base<short> atomic_short

atomic_short

Definition at line 80 of file atomicfwd_cxx.h.

typedef __atomic_base<unsigned char> atomic_uchar

atomic_uchar

Definition at line 77 of file atomicfwd_cxx.h.

typedef __atomic_base<unsigned int> atomic_uint

atomic_uint

Definition at line 89 of file atomicfwd_cxx.h.

typedef __atomic_base<unsigned long long> atomic_ullong

atomic_ullong

Definition at line 101 of file atomicfwd_cxx.h.

typedef __atomic_base<unsigned long> atomic_ulong

atomic_ulong

Definition at line 95 of file atomicfwd_cxx.h.

typedef __atomic_base<unsigned short> atomic_ushort

atomic_ushort

Definition at line 83 of file atomicfwd_cxx.h.

typedef __atomic_base<wchar_t> atomic_wchar_t

atomic_wchar_t

Definition at line 104 of file atomicfwd_cxx.h.

typedef enum std::memory_order std::memory_order

Enumeration for memory_order.

## Enumeration Type Documentation

enum std::memory_order

Enumeration for memory_order.

Definition at line 47 of file atomic_base.h.

## Function Documentation

template<typename _Tp >

_Tp std::kill_dependency | ( | _Tp | __y | ) | `[inline]`

kill_dependency

Definition at line 54 of file atomic.