STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Macros | Typedefs | Functions
atomic File Reference
#include <yvals.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <limits.h>
#include <assert.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< _Ty, _Bytes >
 
struct  atomic< _Ty >
 
struct  atomic< void * >
 

Macros

#define _ATOMIC_
 
#define ATOMIC_CHAR_LOCK_FREE   _ATOMIC_CHAR_LOCK_FREE
 
#define ATOMIC_CHAR16_T_LOCK_FREE   _ATOMIC_CHAR16_T_LOCK_FREE
 
#define ATOMIC_CHAR32_T_LOCK_FREE   _ATOMIC_CHAR32_T_LOCK_FREE
 
#define ATOMIC_WCHAR_T_LOCK_FREE   _ATOMIC_WCHAR_T_LOCK_FREE
 
#define ATOMIC_SHORT_LOCK_FREE   _ATOMIC_SHORT_LOCK_FREE
 
#define ATOMIC_INT_LOCK_FREE   _ATOMIC_INT_LOCK_FREE
 
#define ATOMIC_LONG_LOCK_FREE   _ATOMIC_LONG_LOCK_FREE
 
#define ATOMIC_LLONG_LOCK_FREE   _ATOMIC_LLONG_LOCK_FREE
 
#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_HAS_NO_SPECIALIZATION
 
#define _ATOMIC_ITYPE   atomic_char32_t
 
#define _ITYPE   char32_t
 
#define _ISIZE   4
 
#define _ATOMIC_HAS_ARITHMETIC_OPS
 
#define _ATOMIC_HAS_NO_SPECIALIZATION
 
#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_address atomic_pointer
 
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_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_CHAR16_T_LOCK_FREE   _ATOMIC_CHAR16_T_LOCK_FREE
#define ATOMIC_CHAR32_T_LOCK_FREE   _ATOMIC_CHAR32_T_LOCK_FREE
#define ATOMIC_CHAR_LOCK_FREE   _ATOMIC_CHAR_LOCK_FREE
#define ATOMIC_FLAG_INIT   {0}
#define ATOMIC_INT_LOCK_FREE   _ATOMIC_INT_LOCK_FREE
#define ATOMIC_LLONG_LOCK_FREE   _ATOMIC_LLONG_LOCK_FREE
#define ATOMIC_LONG_LOCK_FREE   _ATOMIC_LONG_LOCK_FREE
#define ATOMIC_SHORT_LOCK_FREE   _ATOMIC_SHORT_LOCK_FREE
#define ATOMIC_VAR_INIT (   _Val)    { _Val }
#define ATOMIC_WCHAR_T_LOCK_FREE   _ATOMIC_WCHAR_T_LOCK_FREE

Typedef Documentation

typedef struct atomic_flag atomic_flag
typedef _Atomic_address atomic_pointer

Function Documentation

_STD_BEGIN memory_order _Get_memory_order ( memory_order  _Order)
inline
40  { // get second memory_order argument for cas functions
41  // that take only one memory_order argument
44  : _Order;
45  }
Definition: xatomic0.h:24
Definition: xatomic0.h:20
Definition: xatomic0.h:23
Definition: xatomic0.h:22
template<class _Ty >
bool atomic_compare_exchange_strong ( volatile atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value 
)
inline
1022  {
1023  return _Atom->compare_exchange_strong(*_Exp, _Value);
1024  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
template<class _Ty >
bool atomic_compare_exchange_strong ( atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value 
)
inline
1029  {
1030  return _Atom->compare_exchange_strong(*_Exp, _Value);
1031  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
bool compare_exchange_strong(_Ty &_Exp, _Ty _Value, memory_order _Order1, memory_order _Order2) volatile _NOEXCEPT
Definition: atomic:624
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
template<class _Ty >
bool atomic_compare_exchange_strong_explicit ( volatile atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
1037  {
1038  return _Atom->compare_exchange_strong(*_Exp, _Value, _Order1, _Order2);
1039  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
template<class _Ty >
bool atomic_compare_exchange_strong_explicit ( atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
1045  {
1046  return _Atom->compare_exchange_strong(*_Exp, _Value, _Order1, _Order2);
1047  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
bool compare_exchange_strong(_Ty &_Exp, _Ty _Value, memory_order _Order1, memory_order _Order2) volatile _NOEXCEPT
Definition: atomic:624
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
template<class _Ty >
bool atomic_compare_exchange_weak ( volatile atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value 
)
inline
992  {
993  return _Atom->compare_exchange_weak(*_Exp, _Value);
994  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
template<class _Ty >
bool atomic_compare_exchange_weak ( atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value 
)
inline
999  {
1000  return _Atom->compare_exchange_weak(*_Exp, _Value);
1001  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_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:594
template<class _Ty >
bool atomic_compare_exchange_weak_explicit ( volatile atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
1007  {
1008  return _Atom->compare_exchange_weak(*_Exp, _Value, _Order1, _Order2);
1009  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
template<class _Ty >
bool atomic_compare_exchange_weak_explicit ( atomic< _Ty > *  _Atom,
_Ty *  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
1015  {
1016  return _Atom->compare_exchange_weak(*_Exp, _Value, _Order1, _Order2);
1017  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_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:594
template<class _Ty >
_Ty atomic_exchange ( volatile atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
964  {
965  return _Atom->exchange(_Value);
966  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
template<class _Ty >
_Ty atomic_exchange ( atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
971  {
972  return _Atom->exchange(_Value);
973  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_Ty exchange(_Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
Definition: atomic:580
template<class _Ty >
_Ty atomic_exchange_explicit ( volatile atomic< _Ty > *  _Atom,
_Ty  _Value,
memory_order  _Order 
)
inline
978  {
979  return _Atom->exchange(_Value, _Order);
980  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
template<class _Ty >
_Ty atomic_exchange_explicit ( atomic< _Ty > *  _Atom,
_Ty  _Value,
memory_order  _Order 
)
inline
985  {
986  return _Atom->exchange(_Value, _Order);
987  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_Ty exchange(_Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
Definition: atomic:580
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
1053  {
1054  return _Atom->fetch_add(_Value);
1055  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
template<class _Ty >
_Ty* atomic_fetch_add ( atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value 
)
inline
1060  {
1061  return _Atom->fetch_add(_Value);
1062  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
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
1068  {
1069  return _Atom->fetch_add(_Value, _Order);
1070  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
template<class _Ty >
_Ty* atomic_fetch_add_explicit ( atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value,
memory_order  _Order 
)
inline
1076  {
1077  return _Atom->fetch_add(_Value, _Order);
1078  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
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
1083  {
1084  return _Atom->fetch_sub(_Value);
1085  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
template<class _Ty >
_Ty* atomic_fetch_sub ( atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value 
)
inline
1090  {
1091  return _Atom->fetch_sub(_Value);
1092  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
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
1098  {
1099  return _Atom->fetch_sub(_Value, _Order);
1100  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
template<class _Ty >
_Ty* atomic_fetch_sub_explicit ( atomic< _Ty * > *  _Atom,
ptrdiff_t  _Value,
memory_order  _Order 
)
inline
1106  {
1107  return _Atom->fetch_sub(_Value, _Order);
1108  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
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
241  { // atomically clear *_Flag
242  _ATOMIC_FLAG_CLEAR(&_Flag->_My_flag, memory_order_seq_cst);
243  }
#define _ATOMIC_FLAG_CLEAR
Definition: xatomic.h:215
Definition: xatomic0.h:25
void atomic_flag_clear ( atomic_flag _Flag)
inline
246  { // atomically clear *_Flag
248  }
#define _ATOMIC_FLAG_CLEAR
Definition: xatomic.h:215
Definition: xatomic0.h:25
_Atomic_flag_t _My_flag
Definition: atomic:187
void atomic_flag_clear_explicit ( volatile atomic_flag _Flag,
memory_order  _Order 
)
inline
252  { // atomically clear *_Flag
253  _ATOMIC_FLAG_CLEAR(&_Flag->_My_flag, _Order);
254  }
#define _ATOMIC_FLAG_CLEAR
Definition: xatomic.h:215
void atomic_flag_clear_explicit ( atomic_flag _Flag,
memory_order  _Order 
)
inline
258  { // atomically clear *_Flag
259  _ATOMIC_FLAG_CLEAR(&_Flag->_My_flag, _Order);
260  }
#define _ATOMIC_FLAG_CLEAR
Definition: xatomic.h:215
_Atomic_flag_t _My_flag
Definition: atomic:187
bool atomic_flag_test_and_set ( volatile atomic_flag _Flag)
inline
219  { // atomically set *_Flag to true and return previous value
220  return _ATOMIC_FLAG_TEST_AND_SET(&_Flag->_My_flag, memory_order_seq_cst);
221  }
#define _ATOMIC_FLAG_TEST_AND_SET
Definition: xatomic.h:214
Definition: xatomic0.h:25
bool atomic_flag_test_and_set ( atomic_flag _Flag)
inline
224  { // atomically set *_Flag to true and return previous value
226  }
#define _ATOMIC_FLAG_TEST_AND_SET
Definition: xatomic.h:214
Definition: xatomic0.h:25
_Atomic_flag_t _My_flag
Definition: atomic:187
bool atomic_flag_test_and_set_explicit ( volatile atomic_flag _Flag,
memory_order  _Order 
)
inline
230  { // atomically set *_Flag to true and return previous value
231  return _ATOMIC_FLAG_TEST_AND_SET(&_Flag->_My_flag, _Order);
232  }
#define _ATOMIC_FLAG_TEST_AND_SET
Definition: xatomic.h:214
bool atomic_flag_test_and_set_explicit ( atomic_flag _Flag,
memory_order  _Order 
)
inline
236  { // atomically set *_Flag to true and return previous value
237  return _ATOMIC_FLAG_TEST_AND_SET(&_Flag->_My_flag, _Order);
238  }
#define _ATOMIC_FLAG_TEST_AND_SET
Definition: xatomic.h:214
_Atomic_flag_t _My_flag
Definition: atomic:187
template<class _Ty >
void atomic_init ( volatile atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
892  {
893  *_Atom = _Value;
894  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
template<class _Ty >
void atomic_init ( atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
899  {
900  *_Atom = _Value;
901  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
template<class _Ty >
bool atomic_is_lock_free ( const volatile atomic< _Ty > *  _Atom)
inline
878  {
879  return _Atom->is_lock_free();
880  }
template<class _Ty >
bool atomic_is_lock_free ( const atomic< _Ty > *  _Atom)
inline
885  {
886  return _Atom->is_lock_free();
887  }
bool is_lock_free() const volatile _NOEXCEPT
Definition: atomic:532
template<class _Ty >
_Ty atomic_load ( const volatile atomic< _Ty > *  _Atom)
inline
935  {
936  return _Atom->load();
937  }
template<class _Ty >
_Ty atomic_load ( const atomic< _Ty > *  _Atom)
inline
941  {
942  return _Atom->load();
943  }
_Ty load(memory_order _Order=memory_order_seq_cst) const volatile _NOEXCEPT
Definition: atomic:554
template<class _Ty >
_Ty atomic_load_explicit ( const volatile atomic< _Ty > *  _Atom,
memory_order  _Order 
)
inline
949  {
950  return _Atom->load(_Order);
951  }
template<class _Ty >
_Ty atomic_load_explicit ( const atomic< _Ty > *  _Atom,
memory_order  _Order 
)
inline
957  {
958  return _Atom->load(_Order);
959  }
_Ty load(memory_order _Order=memory_order_seq_cst) const volatile _NOEXCEPT
Definition: atomic:554
void atomic_signal_fence ( memory_order  _Order)
inline
1117  { // force memory visibility and inhibit compiler reordering
1118  return _ATOMIC_SIGNAL_FENCE(_Order);
1119  }
#define _ATOMIC_SIGNAL_FENCE
Definition: xatomic.h:218
template<class _Ty >
void atomic_store ( volatile atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
906  {
907  _Atom->store(_Value);
908  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
template<class _Ty >
void atomic_store ( atomic< _Ty > *  _Atom,
_Ty  _Value 
)
inline
913  {
914  _Atom->store(_Value);
915  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
void store(_Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
Definition: atomic:542
template<class _Ty >
void atomic_store_explicit ( volatile atomic< _Ty > *  _Atom,
_Ty  _Value,
memory_order  _Order 
)
inline
921  {
922  _Atom->store(_Value, _Order);
923  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
template<class _Ty >
void atomic_store_explicit ( atomic< _Ty > *  _Atom,
_Ty  _Value,
memory_order  _Order 
)
inline
929  {
930  _Atom->store(_Value, _Order);
931  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
void store(_Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
Definition: atomic:542
void atomic_thread_fence ( memory_order  _Order)
inline
1112  { // force memory visibility and inhibit compiler reordering
1113  return _ATOMIC_THREAD_FENCE(_Order);
1114  }
#define _ATOMIC_THREAD_FENCE
Definition: xatomic.h:217
template<class _Ty >
_Ty kill_dependency ( _Ty  _Arg)
50  { // magic template that kills dependency ordering when called
51  return _Arg;
52  }