STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Macros | Typedefs | Functions
atomic File Reference
#include <yvals.h>
#include <type_traits>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <limits.h>
#include <xatomic.h>
#include <xxatomic>

Classes

struct  atomic< _Ty >
 
struct  atomic_flag
 
struct  _Atomic_impl< _Bytes >
 
struct  _Atomic_impl< 1U >
 
struct  _Atomic_impl< 2U >
 
struct  _Atomic_impl< 4U >
 
struct  _Atomic_impl< 8U >
 
struct  _Atomic_base< _Ty, _Bytes >
 
struct  atomic< _Ty >
 

Macros

#define _ATOMIC_
 
#define ATOMIC_BOOL_LOCK_FREE   2
 
#define ATOMIC_CHAR_LOCK_FREE   2
 
#define ATOMIC_CHAR16_T_LOCK_FREE   2
 
#define ATOMIC_CHAR32_T_LOCK_FREE   2
 
#define ATOMIC_WCHAR_T_LOCK_FREE   2
 
#define ATOMIC_SHORT_LOCK_FREE   2
 
#define ATOMIC_INT_LOCK_FREE   2
 
#define ATOMIC_LONG_LOCK_FREE   2
 
#define ATOMIC_LLONG_LOCK_FREE   2
 
#define ATOMIC_POINTER_LOCK_FREE   2
 
#define ATOMIC_FLAG_INIT   {0}
 
#define ATOMIC_VAR_INIT(_Val)   { _Val }
 
#define _ATOMIC_ITYPE   _Atomic_bool
 
#define _ITYPE   bool
 
#define _ISIZE   1
 
#define _ATOMIC_ITYPE   _Atomic_char
 
#define _ITYPE   char
 
#define _ISIZE   1
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_schar
 
#define _ITYPE   signed char
 
#define _ISIZE   1
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_uchar
 
#define _ITYPE   unsigned char
 
#define _ISIZE   1
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_char16_t
 
#define _ITYPE   char16_t
 
#define _ISIZE   2
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_char32_t
 
#define _ITYPE   char32_t
 
#define _ISIZE   4
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_wchar_t
 
#define _ITYPE   wchar_t
 
#define _ISIZE   _WCHAR_T_SIZE
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_HAS_NO_SPECIALIZATION
 
#define _ATOMIC_ITYPE   _Atomic_short
 
#define _ITYPE   short
 
#define _ISIZE   _SHORT_SIZE
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_ushort
 
#define _ITYPE   unsigned short
 
#define _ISIZE   _SHORT_SIZE
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_int
 
#define _ITYPE   int
 
#define _ISIZE   _INT_SIZE
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_uint
 
#define _ITYPE   unsigned int
 
#define _ISIZE   _INT_SIZE
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_long
 
#define _ITYPE   long
 
#define _ISIZE   _LONG_SIZE
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_ulong
 
#define _ITYPE   unsigned long
 
#define _ISIZE   _LONG_SIZE
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_llong
 
#define _ITYPE   long long
 
#define _ISIZE   _LONGLONG_SIZE
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_ullong
 
#define _ITYPE   unsigned long long
 
#define _ISIZE   _LONGLONG_SIZE
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_ITYPE   _Atomic_address
 
#define _ITYPE   void *
 
#define _ISIZE   _ADDR_SIZE
 
#define _ATOMIC_IS_ADDRESS_TYPE
 
#define _ATOMIC_HAS_NO_SPECIALIZATION
 

Typedefs

typedef struct atomic_flag atomic_flag
 
typedef atomic< boolatomic_bool
 
typedef atomic< charatomic_char
 
typedef atomic< signed charatomic_schar
 
typedef atomic< unsigned charatomic_uchar
 
typedef atomic< short > atomic_short
 
typedef atomic< unsigned short > atomic_ushort
 
typedef atomic< intatomic_int
 
typedef atomic< unsigned intatomic_uint
 
typedef atomic< longatomic_long
 
typedef atomic< unsigned longatomic_ulong
 
typedef atomic< long longatomic_llong
 
typedef atomic< unsigned long longatomic_ullong
 
typedef atomic< char16_tatomic_char16_t
 
typedef atomic< char32_tatomic_char32_t
 
typedef atomic< wchar_tatomic_wchar_t
 
typedef atomic< int8_tatomic_int8_t
 
typedef atomic< uint8_tatomic_uint8_t
 
typedef atomic< int16_tatomic_int16_t
 
typedef atomic< uint16_tatomic_uint16_t
 
typedef atomic< int32_tatomic_int32_t
 
typedef atomic< uint32_tatomic_uint32_t
 
typedef atomic< int64_tatomic_int64_t
 
typedef atomic< uint64_tatomic_uint64_t
 
typedef atomic< int_least8_tatomic_int_least8_t
 
typedef atomic< uint_least8_tatomic_uint_least8_t
 
typedef atomic< int_least16_tatomic_int_least16_t
 
typedef atomic< uint_least16_tatomic_uint_least16_t
 
typedef atomic< int_least32_tatomic_int_least32_t
 
typedef atomic< uint_least32_tatomic_uint_least32_t
 
typedef atomic< int_least64_tatomic_int_least64_t
 
typedef atomic< uint_least64_tatomic_uint_least64_t
 
typedef atomic< int_fast8_tatomic_int_fast8_t
 
typedef atomic< uint_fast8_tatomic_uint_fast8_t
 
typedef atomic< int_fast16_tatomic_int_fast16_t
 
typedef atomic< uint_fast16_tatomic_uint_fast16_t
 
typedef atomic< int_fast32_tatomic_int_fast32_t
 
typedef atomic< uint_fast32_tatomic_uint_fast32_t
 
typedef atomic< int_fast64_tatomic_int_fast64_t
 
typedef atomic< uint_fast64_tatomic_uint_fast64_t
 
typedef atomic< intptr_tatomic_intptr_t
 
typedef atomic< uintptr_tatomic_uintptr_t
 
typedef atomic< size_tatomic_size_t
 
typedef atomic< ptrdiff_tatomic_ptrdiff_t
 
typedef atomic< intmax_tatomic_intmax_t
 
typedef atomic< uintmax_tatomic_uintmax_t
 

Functions

_STD_BEGIN memory_order _Get_memory_order (memory_order _Order)
 
template<class _Ty >
_Ty kill_dependency (_Ty _Arg) _NOEXCEPT
 
template<class _Ty >
bool atomic_is_lock_free (const volatile atomic< _Ty > *) _NOEXCEPT
 
template<class _Ty >
bool atomic_is_lock_free (const atomic< _Ty > *) _NOEXCEPT
 
template<class _Ty >
void atomic_init (volatile atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
void atomic_init (atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
void atomic_store (volatile atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
void atomic_store (atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
void atomic_store_explicit (volatile atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
void atomic_store_explicit (atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_load (const volatile atomic< _Ty > *) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_load (const atomic< _Ty > *) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_load_explicit (const volatile atomic< _Ty > *, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_load_explicit (const atomic< _Ty > *, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_exchange (volatile atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_exchange (atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_exchange_explicit (volatile atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_exchange_explicit (atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
bool atomic_compare_exchange_weak (volatile atomic< _Ty > *, _Ty *, _Ty) _NOEXCEPT
 
template<class _Ty >
bool atomic_compare_exchange_weak (atomic< _Ty > *, _Ty *, _Ty) _NOEXCEPT
 
template<class _Ty >
bool atomic_compare_exchange_weak_explicit (volatile atomic< _Ty > *, _Ty *, _Ty, memory_order, memory_order) _NOEXCEPT
 
template<class _Ty >
bool atomic_compare_exchange_weak_explicit (atomic< _Ty > *, _Ty *, _Ty, memory_order, memory_order) _NOEXCEPT
 
template<class _Ty >
bool atomic_compare_exchange_strong (volatile atomic< _Ty > *, _Ty *, _Ty) _NOEXCEPT
 
template<class _Ty >
bool atomic_compare_exchange_strong (atomic< _Ty > *, _Ty *, _Ty) _NOEXCEPT
 
template<class _Ty >
bool atomic_compare_exchange_strong_explicit (volatile atomic< _Ty > *, _Ty *, _Ty, memory_order, memory_order) _NOEXCEPT
 
template<class _Ty >
bool atomic_compare_exchange_strong_explicit (atomic< _Ty > *, _Ty *, _Ty, memory_order, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_add (volatile atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_add (atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_add_explicit (volatile atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_add_explicit (atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_sub (volatile atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_sub (atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_sub_explicit (volatile atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_sub_explicit (atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_and (volatile atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_and (atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_and_explicit (volatile atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_and_explicit (atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_or (volatile atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_or (atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_or_explicit (volatile atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_or_explicit (atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_xor (volatile atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_xor (atomic< _Ty > *, _Ty) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_xor_explicit (volatile atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
template<class _Ty >
_Ty atomic_fetch_xor_explicit (atomic< _Ty > *, _Ty, memory_order) _NOEXCEPT
 
bool atomic_flag_test_and_set (volatile atomic_flag *_Flag) _NOEXCEPT
 
bool atomic_flag_test_and_set (atomic_flag *_Flag) _NOEXCEPT
 
bool atomic_flag_test_and_set_explicit (volatile atomic_flag *_Flag, memory_order _Order) _NOEXCEPT
 
bool atomic_flag_test_and_set_explicit (atomic_flag *_Flag, memory_order _Order) _NOEXCEPT
 
void atomic_flag_clear (volatile atomic_flag *_Flag) _NOEXCEPT
 
void atomic_flag_clear (atomic_flag *_Flag) _NOEXCEPT
 
void atomic_flag_clear_explicit (volatile atomic_flag *_Flag, memory_order _Order) _NOEXCEPT
 
void atomic_flag_clear_explicit (atomic_flag *_Flag, memory_order _Order) _NOEXCEPT
 
template<class _Ty >
_Ty * atomic_fetch_add (volatile atomic< _Ty * > *_Atom, ptrdiff_t _Value) _NOEXCEPT
 
template<class _Ty >
_Ty * atomic_fetch_add (atomic< _Ty * > *_Atom, ptrdiff_t _Value) _NOEXCEPT
 
template<class _Ty >
_Ty * atomic_fetch_add_explicit (volatile atomic< _Ty * > *_Atom, ptrdiff_t _Value, memory_order _Order) _NOEXCEPT
 
template<class _Ty >
_Ty * atomic_fetch_add_explicit (atomic< _Ty * > *_Atom, ptrdiff_t _Value, memory_order _Order) _NOEXCEPT
 
template<class _Ty >
_Ty * atomic_fetch_sub (volatile atomic< _Ty * > *_Atom, ptrdiff_t _Value) _NOEXCEPT
 
template<class _Ty >
_Ty * atomic_fetch_sub (atomic< _Ty * > *_Atom, ptrdiff_t _Value) _NOEXCEPT
 
template<class _Ty >
_Ty * atomic_fetch_sub_explicit (volatile atomic< _Ty * > *_Atom, ptrdiff_t _Value, memory_order _Order) _NOEXCEPT
 
template<class _Ty >
_Ty * atomic_fetch_sub_explicit (atomic< _Ty * > *_Atom, ptrdiff_t _Value, memory_order _Order) _NOEXCEPT
 
void atomic_thread_fence (memory_order _Order) _NOEXCEPT
 
void atomic_signal_fence (memory_order _Order) _NOEXCEPT
 

Macro Definition Documentation

#define _ATOMIC_
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_ARITHMETIC_OPS
#define _ATOMIC_HAS_NO_SPECIALIZATION
#define _ATOMIC_HAS_NO_SPECIALIZATION
#define _ATOMIC_IS_ADDRESS_TYPE
#define _ATOMIC_ITYPE   _Atomic_bool
#define _ATOMIC_ITYPE   _Atomic_char
#define _ATOMIC_ITYPE   _Atomic_schar
#define _ATOMIC_ITYPE   _Atomic_uchar
#define _ATOMIC_ITYPE   _Atomic_char16_t
#define _ATOMIC_ITYPE   _Atomic_char32_t
#define _ATOMIC_ITYPE   _Atomic_wchar_t
#define _ATOMIC_ITYPE   _Atomic_short
#define _ATOMIC_ITYPE   _Atomic_ushort
#define _ATOMIC_ITYPE   _Atomic_int
#define _ATOMIC_ITYPE   _Atomic_uint
#define _ATOMIC_ITYPE   _Atomic_long
#define _ATOMIC_ITYPE   _Atomic_ulong
#define _ATOMIC_ITYPE   _Atomic_llong
#define _ATOMIC_ITYPE   _Atomic_ullong
#define _ATOMIC_ITYPE   _Atomic_address
#define _ISIZE   1
#define _ISIZE   1
#define _ISIZE   1
#define _ISIZE   1
#define _ISIZE   2
#define _ISIZE   4
#define _ISIZE   _WCHAR_T_SIZE
#define _ISIZE   _SHORT_SIZE
#define _ISIZE   _SHORT_SIZE
#define _ISIZE   _INT_SIZE
#define _ISIZE   _INT_SIZE
#define _ISIZE   _LONG_SIZE
#define _ISIZE   _LONG_SIZE
#define _ISIZE   _LONGLONG_SIZE
#define _ISIZE   _LONGLONG_SIZE
#define _ISIZE   _ADDR_SIZE
#define _ITYPE   bool
#define _ITYPE   char
#define _ITYPE   signed char
#define _ITYPE   unsigned char
#define _ITYPE   char16_t
#define _ITYPE   char32_t
#define _ITYPE   wchar_t
#define _ITYPE   short
#define _ITYPE   unsigned short
#define _ITYPE   int
#define _ITYPE   unsigned int
#define _ITYPE   long
#define _ITYPE   unsigned long
#define _ITYPE   long long
#define _ITYPE   unsigned long long
#define _ITYPE   void *
#define ATOMIC_BOOL_LOCK_FREE   2
#define ATOMIC_CHAR16_T_LOCK_FREE   2
#define ATOMIC_CHAR32_T_LOCK_FREE   2
#define ATOMIC_CHAR_LOCK_FREE   2
#define ATOMIC_FLAG_INIT   {0}
#define ATOMIC_INT_LOCK_FREE   2
#define ATOMIC_LLONG_LOCK_FREE   2
#define ATOMIC_LONG_LOCK_FREE   2
#define ATOMIC_POINTER_LOCK_FREE   2
#define ATOMIC_SHORT_LOCK_FREE   2
#define ATOMIC_VAR_INIT (   _Val)    { _Val }
#define ATOMIC_WCHAR_T_LOCK_FREE   2

Typedef Documentation

typedef struct atomic_flag atomic_flag
typedef atomic<int> atomic_int
typedef atomic<signed char> atomic_schar
typedef atomic<short> atomic_short
typedef atomic<unsigned char> atomic_uchar
typedef atomic<unsigned int> atomic_uint
typedef atomic<unsigned long long> atomic_ullong
typedef atomic<unsigned long> atomic_ulong
typedef atomic<unsigned short> atomic_ushort

Function Documentation

_STD_BEGIN memory_order _Get_memory_order ( memory_order  _Order)
inline
43  { // get second memory_order argument for cas functions
44  // that take only one memory_order argument
45  return (_Order == memory_order_acq_rel ? memory_order_acquire
47  : _Order);
48  }
Definition: xatomic0.h:21
Definition: xatomic0.h:17
Definition: xatomic0.h:20
Definition: xatomic0.h:19
template<class _Ty >
bool atomic_compare_exchange_strong ( volatile atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value 
)
inline
948  {
949  return (_Atom->compare_exchange_strong(*_Exp, _Value));
950  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
bool atomic_compare_exchange_strong ( atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value 
)
inline
955  {
956  return (_Atom->compare_exchange_strong(*_Exp, _Value));
957  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_In_ _Value
Definition: corecrt_wstdlib.h:65
bool compare_exchange_strong(_Ty &_Exp, _Ty _Value, memory_order _Order1, memory_order _Order2) volatile _NOEXCEPT
Definition: atomic:625
template<class _Ty >
bool atomic_compare_exchange_strong_explicit ( volatile atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
963  {
964  return (_Atom->compare_exchange_strong(*_Exp, _Value, _Order1, _Order2));
965  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
bool atomic_compare_exchange_strong_explicit ( atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
971  {
972  return (_Atom->compare_exchange_strong(*_Exp, _Value, _Order1, _Order2));
973  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_In_ _Value
Definition: corecrt_wstdlib.h:65
bool compare_exchange_strong(_Ty &_Exp, _Ty _Value, memory_order _Order1, memory_order _Order2) volatile _NOEXCEPT
Definition: atomic:625
template<class _Ty >
bool atomic_compare_exchange_weak ( volatile atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value 
)
inline
918  {
919  return (_Atom->compare_exchange_weak(*_Exp, _Value));
920  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
bool atomic_compare_exchange_weak ( atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value 
)
inline
925  {
926  return (_Atom->compare_exchange_weak(*_Exp, _Value));
927  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool compare_exchange_weak(_Ty &_Exp, _Ty _Value, memory_order _Order1, memory_order _Order2) volatile _NOEXCEPT
Definition: atomic:595
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
bool atomic_compare_exchange_weak_explicit ( volatile atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
933  {
934  return (_Atom->compare_exchange_weak(*_Exp, _Value, _Order1, _Order2));
935  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
bool atomic_compare_exchange_weak_explicit ( atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
941  {
942  return (_Atom->compare_exchange_weak(*_Exp, _Value, _Order1, _Order2));
943  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool compare_exchange_weak(_Ty &_Exp, _Ty _Value, memory_order _Order1, memory_order _Order2) volatile _NOEXCEPT
Definition: atomic:595
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty atomic_exchange ( volatile atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
890  {
891  return (_Atom->exchange(_Value));
892  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty atomic_exchange ( atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
897  {
898  return (_Atom->exchange(_Value));
899  }
_Ty exchange(_Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
Definition: atomic:581
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty atomic_exchange_explicit ( volatile atomic< _Ty > *  _Atom,
_Ty  _Value,
memory_order  _Order 
)
inline
904  {
905  return (_Atom->exchange(_Value, _Order));
906  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty atomic_exchange_explicit ( atomic< _Ty > *  _Atom,
_Ty  _Value,
memory_order  _Order 
)
inline
911  {
912  return (_Atom->exchange(_Value, _Order));
913  }
_Ty exchange(_Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
Definition: atomic:581
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty atomic_fetch_add ( volatile atomic< _Ty > *  ,
_Ty   
)
template<class _Ty >
_Ty atomic_fetch_add ( atomic< _Ty > *  ,
_Ty   
)
template<class _Ty >
_Ty* atomic_fetch_add ( volatile atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value 
)
inline
979  {
980  return (_Atom->fetch_add(_Value));
981  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty* atomic_fetch_add ( atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value 
)
inline
986  {
987  return (_Atom->fetch_add(_Value));
988  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty atomic_fetch_add_explicit ( volatile atomic< _Ty > *  ,
_Ty  ,
memory_order   
)
template<class _Ty >
_Ty atomic_fetch_add_explicit ( atomic< _Ty > *  ,
_Ty  ,
memory_order   
)
template<class _Ty >
_Ty* atomic_fetch_add_explicit ( volatile atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value,
memory_order  _Order 
)
inline
994  {
995  return (_Atom->fetch_add(_Value, _Order));
996  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty* atomic_fetch_add_explicit ( atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value,
memory_order  _Order 
)
inline
1002  {
1003  return (_Atom->fetch_add(_Value, _Order));
1004  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty atomic_fetch_and ( volatile atomic< _Ty > *  ,
_Ty   
)
template<class _Ty >
_Ty atomic_fetch_and ( atomic< _Ty > *  ,
_Ty   
)
template<class _Ty >
_Ty atomic_fetch_and_explicit ( volatile atomic< _Ty > *  ,
_Ty  ,
memory_order   
)
template<class _Ty >
_Ty atomic_fetch_and_explicit ( atomic< _Ty > *  ,
_Ty  ,
memory_order   
)
template<class _Ty >
_Ty atomic_fetch_or ( volatile atomic< _Ty > *  ,
_Ty   
)
template<class _Ty >
_Ty atomic_fetch_or ( atomic< _Ty > *  ,
_Ty   
)
template<class _Ty >
_Ty atomic_fetch_or_explicit ( volatile atomic< _Ty > *  ,
_Ty  ,
memory_order   
)
template<class _Ty >
_Ty atomic_fetch_or_explicit ( atomic< _Ty > *  ,
_Ty  ,
memory_order   
)
template<class _Ty >
_Ty atomic_fetch_sub ( volatile atomic< _Ty > *  ,
_Ty   
)
template<class _Ty >
_Ty atomic_fetch_sub ( atomic< _Ty > *  ,
_Ty   
)
template<class _Ty >
_Ty* atomic_fetch_sub ( volatile atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value 
)
inline
1009  {
1010  return (_Atom->fetch_sub(_Value));
1011  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty* atomic_fetch_sub ( atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value 
)
inline
1016  {
1017  return (_Atom->fetch_sub(_Value));
1018  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty atomic_fetch_sub_explicit ( volatile atomic< _Ty > *  ,
_Ty  ,
memory_order   
)
template<class _Ty >
_Ty atomic_fetch_sub_explicit ( atomic< _Ty > *  ,
_Ty  ,
memory_order   
)
template<class _Ty >
_Ty* atomic_fetch_sub_explicit ( volatile atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value,
memory_order  _Order 
)
inline
1024  {
1025  return (_Atom->fetch_sub(_Value, _Order));
1026  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty* atomic_fetch_sub_explicit ( atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value,
memory_order  _Order 
)
inline
1032  {
1033  return (_Atom->fetch_sub(_Value, _Order));
1034  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
_Ty atomic_fetch_xor ( volatile atomic< _Ty > *  ,
_Ty   
)
template<class _Ty >
_Ty atomic_fetch_xor ( atomic< _Ty > *  ,
_Ty   
)
template<class _Ty >
_Ty atomic_fetch_xor_explicit ( volatile atomic< _Ty > *  ,
_Ty  ,
memory_order   
)
template<class _Ty >
_Ty atomic_fetch_xor_explicit ( atomic< _Ty > *  ,
_Ty  ,
memory_order   
)
void atomic_flag_clear ( volatile atomic_flag _Flag)
inline
243  { // atomically clear *_Flag
244  _Atomic_flag_clear(&_Flag->_My_flag, memory_order_seq_cst);
245  }
void _Atomic_flag_clear(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2313
Definition: xatomic0.h:22
void atomic_flag_clear ( atomic_flag _Flag)
inline
248  { // atomically clear *_Flag
250  }
void _Atomic_flag_clear(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2313
Definition: xatomic0.h:22
_Atomic_flag_t _My_flag
Definition: atomic:190
void atomic_flag_clear_explicit ( volatile atomic_flag _Flag,
memory_order  _Order 
)
inline
254  { // atomically clear *_Flag
255  _Atomic_flag_clear(&_Flag->_My_flag, _Order);
256  }
void _Atomic_flag_clear(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2313
void atomic_flag_clear_explicit ( atomic_flag _Flag,
memory_order  _Order 
)
inline
260  { // atomically clear *_Flag
261  _Atomic_flag_clear(&_Flag->_My_flag, _Order);
262  }
void _Atomic_flag_clear(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2313
_Atomic_flag_t _My_flag
Definition: atomic:190
bool atomic_flag_test_and_set ( volatile atomic_flag _Flag)
inline
221  { // atomically set *_Flag to true and return previous value
222  return (_Atomic_flag_test_and_set(&_Flag->_My_flag, memory_order_seq_cst));
223  }
int _Atomic_flag_test_and_set(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2288
Definition: xatomic0.h:22
bool atomic_flag_test_and_set ( atomic_flag _Flag)
inline
226  { // atomically set *_Flag to true and return previous value
228  }
int _Atomic_flag_test_and_set(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2288
Definition: xatomic0.h:22
_Atomic_flag_t _My_flag
Definition: atomic:190
bool atomic_flag_test_and_set_explicit ( volatile atomic_flag _Flag,
memory_order  _Order 
)
inline
232  { // atomically set *_Flag to true and return previous value
233  return (_Atomic_flag_test_and_set(&_Flag->_My_flag, _Order));
234  }
int _Atomic_flag_test_and_set(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2288
bool atomic_flag_test_and_set_explicit ( atomic_flag _Flag,
memory_order  _Order 
)
inline
238  { // atomically set *_Flag to true and return previous value
239  return (_Atomic_flag_test_and_set(&_Flag->_My_flag, _Order));
240  }
int _Atomic_flag_test_and_set(volatile _Atomic_flag_t *_Flag, memory_order _Order)
Definition: xatomic.h:2288
_Atomic_flag_t _My_flag
Definition: atomic:190
template<class _Ty >
void atomic_init ( volatile atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
818  {
819  *_Atom = _Value;
820  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
void atomic_init ( atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
825  {
826  *_Atom = _Value;
827  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
bool atomic_is_lock_free ( const volatile atomic< _Ty > *  _Atom)
inline
804  {
805  return (_Atom->is_lock_free());
806  }
template<class _Ty >
bool atomic_is_lock_free ( const atomic< _Ty > *  _Atom)
inline
811  {
812  return (_Atom->is_lock_free());
813  }
bool is_lock_free() const volatile _NOEXCEPT
Definition: atomic:533
template<class _Ty >
_Ty atomic_load ( const volatile atomic< _Ty > *  _Atom)
inline
861  {
862  return (_Atom->load());
863  }
template<class _Ty >
_Ty atomic_load ( const atomic< _Ty > *  _Atom)
inline
867  {
868  return (_Atom->load());
869  }
_Ty load(memory_order _Order=memory_order_seq_cst) const volatile _NOEXCEPT
Definition: atomic:555
template<class _Ty >
_Ty atomic_load_explicit ( const volatile atomic< _Ty > *  _Atom,
memory_order  _Order 
)
inline
875  {
876  return (_Atom->load(_Order));
877  }
template<class _Ty >
_Ty atomic_load_explicit ( const atomic< _Ty > *  _Atom,
memory_order  _Order 
)
inline
883  {
884  return (_Atom->load(_Order));
885  }
_Ty load(memory_order _Order=memory_order_seq_cst) const volatile _NOEXCEPT
Definition: atomic:555
void atomic_signal_fence ( memory_order  _Order)
inline
1043  { // force memory visibility and inhibit compiler reordering
1044  return (_Atomic_signal_fence(_Order));
1045  }
void _Atomic_signal_fence(memory_order)
Definition: xatomic.h:2352
template<class _Ty >
void atomic_store ( volatile atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
832  {
833  _Atom->store(_Value);
834  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
void atomic_store ( atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
839  {
840  _Atom->store(_Value);
841  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
void store(_Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
Definition: atomic:543
template<class _Ty >
void atomic_store_explicit ( volatile atomic< _Ty > *  _Atom,
_Ty  _Value,
memory_order  _Order 
)
inline
847  {
848  _Atom->store(_Value, _Order);
849  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
template<class _Ty >
void atomic_store_explicit ( atomic< _Ty > *  _Atom,
_Ty  _Value,
memory_order  _Order 
)
inline
855  {
856  _Atom->store(_Value, _Order);
857  }
_In_ _Value
Definition: corecrt_wstdlib.h:65
void store(_Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
Definition: atomic:543
void atomic_thread_fence ( memory_order  _Order)
inline
1038  { // force memory visibility and inhibit compiler reordering
1039  return (_Atomic_thread_fence(_Order));
1040  }
void _Atomic_thread_fence(memory_order _Order)
Definition: xatomic.h:2333
template<class _Ty >
_Ty kill_dependency ( _Ty  _Arg)
53  { // magic template that kills dependency ordering when called
54  return (_Arg);
55  }