STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Macros | Typedefs | Functions
xxatomic File Reference

Classes

struct  _ATOMIC_ITYPE
 
struct  atomic< _ITYPE >
 

Macros

#define _ATOMIC_UINT   _CONCAT(_CONCAT(_Uint, _ISIZE), _t)
 
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)   _CONCAT(name, _ISIZE)
 
#define _ATOMIC_LOCKING_PRIMITIVE_NAME(name)   _CONCAT(_CONCAT(name, _ISIZE), _locking)
 
#define _ATOMIC_IS_LOCK_FREE   _CONCAT(_Atomic_is_lock_free_, _ISIZE)
 
#define _ATOMIC_STORE(_Atom, _Value, _Order)
 
#define _ATOMIC_LOAD(_Atom, _Order)
 
#define _ATOMIC_EXCHANGE(_Atom, _Value, _Order)
 
#define _ATOMIC_COMPARE_EXCHANGE_WEAK(_Atom, _Expected, _Desired, _Order1, _Order2)
 
#define _ATOMIC_COMPARE_EXCHANGE_STRONG(_Atom, _Expected, _Desired, _Order1, _Order2)
 
#define _ATOMIC_FETCH_ADD(_Atom, _Value, _Order)
 
#define _ATOMIC_FETCH_SUB(_Atom, _Value, _Order)
 
#define _ATOMIC_FETCH_AND(_Atom, _Value, _Order)
 
#define _ATOMIC_FETCH_OR(_Atom, _Value, _Order)
 
#define _ATOMIC_FETCH_XOR(_Atom, _Value, _Order)
 

Typedefs

typedef struct _ATOMIC_ITYPE _ATOMIC_ITYPE
 

Functions

bool atomic_is_lock_free (const volatile _ATOMIC_ITYPE *) _NOEXCEPT
 
bool atomic_is_lock_free (const _ATOMIC_ITYPE *) _NOEXCEPT
 
bool atomic_is_lock_free (const volatile atomic< _ITYPE > *) _NOEXCEPT
 
bool atomic_is_lock_free (const atomic< _ITYPE > *) _NOEXCEPT
 
void atomic_init (volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value) _NOEXCEPT
 
void atomic_init (_ATOMIC_ITYPE *_Atom, _ITYPE _Value) _NOEXCEPT
 
void atomic_init (volatile atomic< _ITYPE > *_Atom, _ITYPE _Value) _NOEXCEPT
 
void atomic_init (atomic< _ITYPE > *_Atom, _ITYPE _Value) _NOEXCEPT
 
void atomic_store_explicit (volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
 
void atomic_store_explicit (_ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
 
void atomic_store (volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value) _NOEXCEPT
 
void atomic_store (_ATOMIC_ITYPE *_Atom, _ITYPE _Value) _NOEXCEPT
 
_ITYPE atomic_load_explicit (const volatile _ATOMIC_ITYPE *_Atom, memory_order _Order) _NOEXCEPT
 
_ITYPE atomic_load_explicit (const _ATOMIC_ITYPE *_Atom, memory_order _Order) _NOEXCEPT
 
_ITYPE atomic_load (const volatile _ATOMIC_ITYPE *_Atom) _NOEXCEPT
 
_ITYPE atomic_load (const _ATOMIC_ITYPE *_Atom) _NOEXCEPT
 
_ITYPE atomic_exchange_explicit (volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
 
_ITYPE atomic_exchange_explicit (_ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
 
_ITYPE atomic_exchange (volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value) _NOEXCEPT
 
_ITYPE atomic_exchange (_ATOMIC_ITYPE *_Atom, _ITYPE _Value) _NOEXCEPT
 
bool atomic_compare_exchange_weak_explicit (volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
 
bool atomic_compare_exchange_weak_explicit (_ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
 
bool atomic_compare_exchange_weak (volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
 
bool atomic_compare_exchange_weak (_ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
 
bool atomic_compare_exchange_strong_explicit (volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
 
bool atomic_compare_exchange_strong_explicit (_ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
 
bool atomic_compare_exchange_strong (volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
 
bool atomic_compare_exchange_strong (_ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
 
template<>
void atomic_store (volatile atomic< _ITYPE > *_Atom, _ITYPE _Value) _NOEXCEPT
 
template<>
void atomic_store (atomic< _ITYPE > *_Atom, _ITYPE _Value) _NOEXCEPT
 
template<>
void atomic_store_explicit (volatile atomic< _ITYPE > *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
 
template<>
void atomic_store_explicit (atomic< _ITYPE > *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
 
template<>
_ITYPE atomic_load (const volatile atomic< _ITYPE > *_Atom) _NOEXCEPT
 
template<>
_ITYPE atomic_load (const atomic< _ITYPE > *_Atom) _NOEXCEPT
 
template<>
_ITYPE atomic_load_explicit (const volatile atomic< _ITYPE > *_Atom, memory_order _Order) _NOEXCEPT
 
template<>
_ITYPE atomic_load_explicit (const atomic< _ITYPE > *_Atom, memory_order _Order) _NOEXCEPT
 
template<>
_ITYPE atomic_exchange (volatile atomic< _ITYPE > *_Atom, _ITYPE _Value) _NOEXCEPT
 
template<>
_ITYPE atomic_exchange (atomic< _ITYPE > *_Atom, _ITYPE _Value) _NOEXCEPT
 
template<>
_ITYPE atomic_exchange_explicit (volatile atomic< _ITYPE > *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
 
template<>
_ITYPE atomic_exchange_explicit (atomic< _ITYPE > *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
 
template<>
bool atomic_compare_exchange_weak (volatile atomic< _ITYPE > *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
 
template<>
bool atomic_compare_exchange_weak (atomic< _ITYPE > *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
 
template<>
bool atomic_compare_exchange_weak_explicit (volatile atomic< _ITYPE > *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
 
template<>
bool atomic_compare_exchange_weak_explicit (atomic< _ITYPE > *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
 
template<>
bool atomic_compare_exchange_strong (volatile atomic< _ITYPE > *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
 
template<>
bool atomic_compare_exchange_strong (atomic< _ITYPE > *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
 
template<>
bool atomic_compare_exchange_strong_explicit (volatile atomic< _ITYPE > *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
 
template<>
bool atomic_compare_exchange_strong_explicit (atomic< _ITYPE > *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
 

Macro Definition Documentation

#define _ATOMIC_COMPARE_EXCHANGE_STRONG (   _Atom,
  _Expected,
  _Desired,
  _Order1,
  _Order2 
)
Value:
_ATOMIC_LOCK_FREE_PRIMITIVE_NAME(_Atomic_compare_exchange_strong_) \
((_ATOMIC_UINT*)&_Atom->_My_val, \
(_ATOMIC_UINT*)_Expected, (_ATOMIC_UINT)_Value, \
_Order1, _Order2)
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)
Definition: xxatomic:13
#define _ATOMIC_UINT
Definition: xxatomic:12
#define _ATOMIC_COMPARE_EXCHANGE_WEAK (   _Atom,
  _Expected,
  _Desired,
  _Order1,
  _Order2 
)
Value:
_ATOMIC_LOCK_FREE_PRIMITIVE_NAME(_Atomic_compare_exchange_weak_) \
((_ATOMIC_UINT*)&_Atom->_My_val, \
(_ATOMIC_UINT*)_Expected, (_ATOMIC_UINT)_Value, \
_Order1, _Order2)
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)
Definition: xxatomic:13
#define _ATOMIC_UINT
Definition: xxatomic:12
#define _ATOMIC_EXCHANGE (   _Atom,
  _Value,
  _Order 
)
Value:
((_ATOMIC_UINT*)&_Atom->_My_val, (_ATOMIC_UINT)_Value, _Order)
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)
Definition: xxatomic:13
#define _ITYPE
Definition: atomic:797
#define _ATOMIC_UINT
Definition: xxatomic:12
#define _ATOMIC_FETCH_ADD (   _Atom,
  _Value,
  _Order 
)
Value:
((_ATOMIC_UINT*)&_Atom->_My_val, (_ATOMIC_UINT)_Value, _Order)
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)
Definition: xxatomic:13
#define _ITYPE
Definition: atomic:797
#define _ATOMIC_UINT
Definition: xxatomic:12
#define _ATOMIC_FETCH_AND (   _Atom,
  _Value,
  _Order 
)
Value:
((_ATOMIC_UINT*)&_Atom->_My_val, (_ATOMIC_UINT)_Value, _Order)
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)
Definition: xxatomic:13
#define _ITYPE
Definition: atomic:797
#define _ATOMIC_UINT
Definition: xxatomic:12
#define _ATOMIC_FETCH_OR (   _Atom,
  _Value,
  _Order 
)
Value:
((_ATOMIC_UINT*)&_Atom->_My_val, (_ATOMIC_UINT)_Value, _Order)
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)
Definition: xxatomic:13
#define _ITYPE
Definition: atomic:797
#define _ATOMIC_UINT
Definition: xxatomic:12
#define _ATOMIC_FETCH_SUB (   _Atom,
  _Value,
  _Order 
)
Value:
((_ATOMIC_UINT*)&_Atom->_My_val, (_ATOMIC_UINT)_Value, _Order)
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)
Definition: xxatomic:13
#define _ITYPE
Definition: atomic:797
#define _ATOMIC_UINT
Definition: xxatomic:12
#define _ATOMIC_FETCH_XOR (   _Atom,
  _Value,
  _Order 
)
Value:
((_ATOMIC_UINT*)&_Atom->_My_val, (_ATOMIC_UINT)_Value, _Order)
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)
Definition: xxatomic:13
#define _ITYPE
Definition: atomic:797
#define _ATOMIC_UINT
Definition: xxatomic:12
#define _ATOMIC_IS_LOCK_FREE   _CONCAT(_Atomic_is_lock_free_, _ISIZE)
#define _ATOMIC_LOAD (   _Atom,
  _Order 
)
Value:
((_ATOMIC_UINT*)&_Atom->_My_val, _Order)
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)
Definition: xxatomic:13
#define _ITYPE
Definition: atomic:797
#define _ATOMIC_UINT
Definition: xxatomic:12
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME (   name)    _CONCAT(name, _ISIZE)
#define _ATOMIC_LOCKING_PRIMITIVE_NAME (   name)    _CONCAT(_CONCAT(name, _ISIZE), _locking)
#define _ATOMIC_STORE (   _Atom,
  _Value,
  _Order 
)
Value:
((_ATOMIC_UINT*)&_Atom->_My_val, \
(_ATOMIC_UINT)_Value, _Order)
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_LOCK_FREE_PRIMITIVE_NAME(name)
Definition: xxatomic:13
#define _ATOMIC_UINT
Definition: xxatomic:12
#define _ATOMIC_UINT   _CONCAT(_CONCAT(_Uint, _ISIZE), _t)

Typedef Documentation

typedef struct _ATOMIC_ITYPE _ATOMIC_ITYPE

Function Documentation

bool atomic_compare_exchange_strong ( volatile _ATOMIC_ITYPE _Atom,
_ITYPE _Exp,
_ITYPE  _Value 
)
inline
735  { // compare and exchange value stored in *_Atom with *_Exp, _Value
738  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_strong_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
Definition: xxatomic:710
Definition: xatomic0.h:25
bool atomic_compare_exchange_strong ( _ATOMIC_ITYPE _Atom,
_ITYPE _Exp,
_ITYPE  _Value 
)
inline
742  { // compare and exchange value stored in *_Atom with *_Exp, _Value
745  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_strong_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
Definition: xxatomic:710
Definition: xatomic0.h:25
template<>
bool atomic_compare_exchange_strong ( volatile atomic< _ITYPE > *  _Atom,
_ITYPE _Exp,
_ITYPE  _Value 
)
inline
1042  {
1044  static_cast<volatile _ATOMIC_ITYPE *>(_Atom), _Exp, _Value);
1045  }
bool atomic_compare_exchange_strong(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
Definition: xxatomic:733
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
template<>
bool atomic_compare_exchange_strong ( atomic< _ITYPE > *  _Atom,
_ITYPE _Exp,
_ITYPE  _Value 
)
inline
1051  {
1053  static_cast<_ATOMIC_ITYPE *>(_Atom), _Exp, _Value);
1054  }
bool atomic_compare_exchange_strong(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
Definition: xxatomic:733
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_strong_explicit ( volatile _ATOMIC_ITYPE _Atom,
_ITYPE _Exp,
_ITYPE  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
713  { // compare and exchange value stored in *_Atom with *_Exp, _Value
714  assert(_Order2 != memory_order_release);
715  assert(_Order2 != memory_order_acq_rel);
716  assert(_Order2 <= _Order1);
718  _Order1, _Order2);
719  }
#define _ATOMIC_COMPARE_EXCHANGE_STRONG(_Atom, _Expected, _Desired, _Order1, _Order2)
Definition: xxatomic:40
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
Definition: xatomic0.h:24
Definition: xatomic0.h:23
#define assert(_Expression)
Definition: assert.h:41
bool atomic_compare_exchange_strong_explicit ( _ATOMIC_ITYPE _Atom,
_ITYPE _Exp,
_ITYPE  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
724  { // compare and exchange value stored in *_Atom with *_Exp, _Value
725  assert(_Order2 != memory_order_release);
726  assert(_Order2 != memory_order_acq_rel);
727  assert(_Order2 <= _Order1);
729  _Order1, _Order2);
730  }
#define _ATOMIC_COMPARE_EXCHANGE_STRONG(_Atom, _Expected, _Desired, _Order1, _Order2)
Definition: xxatomic:40
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
Definition: xatomic0.h:24
Definition: xatomic0.h:23
#define assert(_Expression)
Definition: assert.h:41
template<>
bool atomic_compare_exchange_strong_explicit ( volatile atomic< _ITYPE > *  _Atom,
_ITYPE _Exp,
_ITYPE  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
1060  {
1062  static_cast<volatile _ATOMIC_ITYPE *>(_Atom), _Exp,
1063  _Value, _Order1, _Order2);
1064  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_strong_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
Definition: xxatomic:710
template<>
bool atomic_compare_exchange_strong_explicit ( atomic< _ITYPE > *  _Atom,
_ITYPE _Exp,
_ITYPE  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
1070  {
1072  static_cast<_ATOMIC_ITYPE *>(_Atom), _Exp, _Value, _Order1, _Order2);
1073  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_strong_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
Definition: xxatomic:710
bool atomic_compare_exchange_weak ( volatile _ATOMIC_ITYPE _Atom,
_ITYPE _Exp,
_ITYPE  _Value 
)
inline
667  { // compare and exchange value stored in *_Atom with *_Exp, _Value
670  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_weak_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
Definition: xxatomic:641
Definition: xatomic0.h:25
bool atomic_compare_exchange_weak ( _ATOMIC_ITYPE _Atom,
_ITYPE _Exp,
_ITYPE  _Value 
)
inline
675  { // compare and exchange value stored in *_Atom with *_Exp, _Value
678  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_weak_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
Definition: xxatomic:641
Definition: xatomic0.h:25
template<>
bool atomic_compare_exchange_weak ( volatile atomic< _ITYPE > *  _Atom,
_ITYPE _Exp,
_ITYPE  _Value 
)
inline
1005  {
1007  static_cast<volatile _ATOMIC_ITYPE *>(_Atom), _Exp, _Value);
1008  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_weak(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
Definition: xxatomic:664
template<>
bool atomic_compare_exchange_weak ( atomic< _ITYPE > *  _Atom,
_ITYPE _Exp,
_ITYPE  _Value 
)
inline
1014  {
1016  static_cast<_ATOMIC_ITYPE *>(_Atom), _Exp, _Value);
1017  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_weak(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value) _NOEXCEPT
Definition: xxatomic:664
bool atomic_compare_exchange_weak_explicit ( volatile _ATOMIC_ITYPE _Atom,
_ITYPE _Exp,
_ITYPE  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
644  { // compare and exchange value stored in *_Atom with *_Exp, _Value
645  assert(_Order2 != memory_order_release);
646  assert(_Order2 != memory_order_acq_rel);
647  assert(_Order2 <= _Order1);
649  _Order1, _Order2);
650  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
#define _ATOMIC_COMPARE_EXCHANGE_WEAK(_Atom, _Expected, _Desired, _Order1, _Order2)
Definition: xxatomic:33
Definition: xatomic0.h:24
Definition: xatomic0.h:23
#define assert(_Expression)
Definition: assert.h:41
bool atomic_compare_exchange_weak_explicit ( _ATOMIC_ITYPE _Atom,
_ITYPE _Exp,
_ITYPE  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
655  { // compare and exchange value stored in *_Atom with *_Exp, _Value
656  assert(_Order2 != memory_order_release);
657  assert(_Order2 != memory_order_acq_rel);
658  assert(_Order2 <= _Order1);
660  _Order1, _Order2);
661  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
#define _ATOMIC_COMPARE_EXCHANGE_WEAK(_Atom, _Expected, _Desired, _Order1, _Order2)
Definition: xxatomic:33
Definition: xatomic0.h:24
Definition: xatomic0.h:23
#define assert(_Expression)
Definition: assert.h:41
template<>
bool atomic_compare_exchange_weak_explicit ( volatile atomic< _ITYPE > *  _Atom,
_ITYPE _Exp,
_ITYPE  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
1023  {
1025  static_cast<volatile _ATOMIC_ITYPE *>(_Atom), _Exp,
1026  _Value, _Order1, _Order2);
1027  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_weak_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
Definition: xxatomic:641
template<>
bool atomic_compare_exchange_weak_explicit ( atomic< _ITYPE > *  _Atom,
_ITYPE _Exp,
_ITYPE  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
1033  {
1035  static_cast<_ATOMIC_ITYPE *>(_Atom), _Exp, _Value, _Order1, _Order2);
1036  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
bool atomic_compare_exchange_weak_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE *_Exp, _ITYPE _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
Definition: xxatomic:641
_ITYPE atomic_exchange ( volatile _ATOMIC_ITYPE _Atom,
_ITYPE  _Value 
)
inline
601  { // exchange value stored in *_Atom with _Value
603  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_ITYPE atomic_exchange_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
Definition: xxatomic:585
Definition: xatomic0.h:25
_ITYPE atomic_exchange ( _ATOMIC_ITYPE _Atom,
_ITYPE  _Value 
)
inline
607  { // exchange value stored in *_Atom with _Value
609  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_ITYPE atomic_exchange_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
Definition: xxatomic:585
Definition: xatomic0.h:25
template<>
_ITYPE atomic_exchange ( volatile atomic< _ITYPE > *  _Atom,
_ITYPE  _Value 
)
inline
972  {
973  return atomic_exchange(
974  static_cast<volatile _ATOMIC_ITYPE *>(_Atom), _Value);
975  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_ITYPE atomic_exchange(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value) _NOEXCEPT
Definition: xxatomic:599
template<>
_ITYPE atomic_exchange ( atomic< _ITYPE > *  _Atom,
_ITYPE  _Value 
)
inline
980  {
981  return atomic_exchange(static_cast<_ATOMIC_ITYPE *>(_Atom), _Value);
982  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_ITYPE atomic_exchange(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value) _NOEXCEPT
Definition: xxatomic:599
_ITYPE atomic_exchange_explicit ( volatile _ATOMIC_ITYPE _Atom,
_ITYPE  _Value,
memory_order  _Order 
)
inline
588  { // exchange value stored in *_Atom with _Value
589  return _ATOMIC_EXCHANGE(_Atom, _Value, _Order);
590  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_EXCHANGE(_Atom, _Value, _Order)
Definition: xxatomic:29
_ITYPE atomic_exchange_explicit ( _ATOMIC_ITYPE _Atom,
_ITYPE  _Value,
memory_order  _Order 
)
inline
595  { // exchange value stored in *_Atom with _Value
596  return _ATOMIC_EXCHANGE(_Atom, _Value, _Order);
597  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_EXCHANGE(_Atom, _Value, _Order)
Definition: xxatomic:29
template<>
_ITYPE atomic_exchange_explicit ( volatile atomic< _ITYPE > *  _Atom,
_ITYPE  _Value,
memory_order  _Order 
)
inline
988  {
990  static_cast<volatile _ATOMIC_ITYPE *>(_Atom), _Value, _Order);
991  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_ITYPE atomic_exchange_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
Definition: xxatomic:585
template<>
_ITYPE atomic_exchange_explicit ( atomic< _ITYPE > *  _Atom,
_ITYPE  _Value,
memory_order  _Order 
)
inline
996  {
997  return atomic_exchange_explicit(static_cast<_ATOMIC_ITYPE *>(_Atom),
998  _Value, _Order);
999  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_ITYPE atomic_exchange_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
Definition: xxatomic:585
void atomic_init ( volatile _ATOMIC_ITYPE _Atom,
_ITYPE  _Value 
)
inline
505  { // non-atomically initialize *_Atom to _Value
506  _Atom->_My_val = (_ATOMIC_UINT)_Value;
507 
508  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_UINT
Definition: xxatomic:12
void atomic_init ( _ATOMIC_ITYPE _Atom,
_ITYPE  _Value 
)
inline
512  { // non-atomically initialize *_Atom to _Value
513  _Atom->_My_val = (_ATOMIC_UINT)_Value;
514 
515  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_ATOMIC_UINT _My_val
Definition: xxatomic:175
#define _ATOMIC_UINT
Definition: xxatomic:12
void atomic_init ( volatile atomic< _ITYPE > *  _Atom,
_ITYPE  _Value 
)
inline
520  { // non-atomically initialize *_Atom to _Value
521  _Atom->_My_val = (_ATOMIC_UINT)_Value;
522 
523  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_UINT
Definition: xxatomic:12
void atomic_init ( atomic< _ITYPE > *  _Atom,
_ITYPE  _Value 
)
inline
527  { // non-atomically initialize *_Atom to _Value
528  _Atom->_My_val = (_ATOMIC_UINT)_Value;
529 
530  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
_ATOMIC_UINT _My_val
Definition: xxatomic:175
#define _ATOMIC_UINT
Definition: xxatomic:12
bool atomic_is_lock_free ( const volatile _ATOMIC_ITYPE )
inline
481  { // return true if operations on _ATOMIC_ITYPE are lock-free
482  return _ATOMIC_IS_LOCK_FREE();
483  }
#define _ATOMIC_IS_LOCK_FREE
Definition: xxatomic:18
bool atomic_is_lock_free ( const _ATOMIC_ITYPE )
inline
486  { // return true if operations on _ATOMIC_ITYPE are lock-free
487  return _ATOMIC_IS_LOCK_FREE();
488  }
#define _ATOMIC_IS_LOCK_FREE
Definition: xxatomic:18
bool atomic_is_lock_free ( const volatile atomic< _ITYPE > *  _Atom)
inline
492  { // return true if operations on _ATOMIC_ITYPE are lock-free
493  return _ATOMIC_IS_LOCK_FREE();
494  }
#define _ATOMIC_IS_LOCK_FREE
Definition: xxatomic:18
bool atomic_is_lock_free ( const atomic< _ITYPE > *  _Atom)
inline
497  { // return true if operations on _ATOMIC_ITYPE are lock-free
498  return _ATOMIC_IS_LOCK_FREE();
499  }
#define _ATOMIC_IS_LOCK_FREE
Definition: xxatomic:18
_ITYPE atomic_load ( const volatile _ATOMIC_ITYPE _Atom)
inline
575  { // return value stored in *_Atom
577  }
_ITYPE atomic_load_explicit(const volatile _ATOMIC_ITYPE *_Atom, memory_order _Order) _NOEXCEPT
Definition: xxatomic:561
Definition: xatomic0.h:25
_ITYPE atomic_load ( const _ATOMIC_ITYPE _Atom)
inline
581  { // return value stored in *_Atom
583  }
_ITYPE atomic_load_explicit(const volatile _ATOMIC_ITYPE *_Atom, memory_order _Order) _NOEXCEPT
Definition: xxatomic:561
Definition: xatomic0.h:25
template<>
_ITYPE atomic_load ( const volatile atomic< _ITYPE > *  _Atom)
inline
943  {
944  return atomic_load(static_cast<const volatile _ATOMIC_ITYPE *>(_Atom));
945  }
_ITYPE atomic_load(const volatile _ATOMIC_ITYPE *_Atom) _NOEXCEPT
Definition: xxatomic:573
template<>
_ITYPE atomic_load ( const atomic< _ITYPE > *  _Atom)
inline
949  {
950  return atomic_load(static_cast<const volatile _ATOMIC_ITYPE *>(_Atom));
951  }
_ITYPE atomic_load(const volatile _ATOMIC_ITYPE *_Atom) _NOEXCEPT
Definition: xxatomic:573
_ITYPE atomic_load_explicit ( const volatile _ATOMIC_ITYPE _Atom,
memory_order  _Order 
)
inline
563  { // return value held in *_Atom
564  return _ATOMIC_LOAD(_Atom, _Order);
565  }
#define _ATOMIC_LOAD(_Atom, _Order)
Definition: xxatomic:25
_ITYPE atomic_load_explicit ( const _ATOMIC_ITYPE _Atom,
memory_order  _Order 
)
inline
569  { // return value held in *_Atom
570  return _ATOMIC_LOAD(_Atom, _Order);
571  }
#define _ATOMIC_LOAD(_Atom, _Order)
Definition: xxatomic:25
template<>
_ITYPE atomic_load_explicit ( const volatile atomic< _ITYPE > *  _Atom,
memory_order  _Order 
)
inline
956  {
957  return atomic_load_explicit(
958  static_cast<const volatile _ATOMIC_ITYPE *>(_Atom), _Order);
959  }
_ITYPE atomic_load_explicit(const volatile _ATOMIC_ITYPE *_Atom, memory_order _Order) _NOEXCEPT
Definition: xxatomic:561
template<>
_ITYPE atomic_load_explicit ( const atomic< _ITYPE > *  _Atom,
memory_order  _Order 
)
inline
964  {
965  return atomic_load_explicit(
966  static_cast<const _ATOMIC_ITYPE *>(_Atom), _Order);
967  }
_ITYPE atomic_load_explicit(const volatile _ATOMIC_ITYPE *_Atom, memory_order _Order) _NOEXCEPT
Definition: xxatomic:561
void atomic_store ( volatile _ATOMIC_ITYPE _Atom,
_ITYPE  _Value 
)
inline
551  { // store _Value into *_Atom
553  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
Definition: xatomic0.h:25
void atomic_store_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
Definition: xxatomic:533
void atomic_store ( _ATOMIC_ITYPE _Atom,
_ITYPE  _Value 
)
inline
557  { // store _Value into *_Atom
559  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
Definition: xatomic0.h:25
void atomic_store_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
Definition: xxatomic:533
template<>
void atomic_store ( volatile atomic< _ITYPE > *  _Atom,
_ITYPE  _Value 
)
inline
914  {
915  atomic_store(static_cast<volatile _ATOMIC_ITYPE *>(_Atom), _Value);
916  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
void atomic_store(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value) _NOEXCEPT
Definition: xxatomic:549
template<>
void atomic_store ( atomic< _ITYPE > *  _Atom,
_ITYPE  _Value 
)
inline
921  {
922  atomic_store(static_cast<_ATOMIC_ITYPE *>(_Atom), _Value);
923  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
void atomic_store(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value) _NOEXCEPT
Definition: xxatomic:549
void atomic_store_explicit ( volatile _ATOMIC_ITYPE _Atom,
_ITYPE  _Value,
memory_order  _Order 
)
inline
536  { // store _Value into *_Atom
537  assert(_ISIZE == sizeof (_ITYPE));
538  _ATOMIC_STORE(_Atom, _Value, _Order);
539  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_STORE(_Atom, _Value, _Order)
Definition: xxatomic:20
#define _ITYPE
Definition: atomic:797
#define _ISIZE
Definition: atomic:798
#define assert(_Expression)
Definition: assert.h:41
void atomic_store_explicit ( _ATOMIC_ITYPE _Atom,
_ITYPE  _Value,
memory_order  _Order 
)
inline
544  { // store _Value into *_Atom
545  assert(_ISIZE == sizeof (_ITYPE));
546  _ATOMIC_STORE(_Atom, _Value, _Order);
547  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
#define _ATOMIC_STORE(_Atom, _Value, _Order)
Definition: xxatomic:20
#define _ITYPE
Definition: atomic:797
#define _ISIZE
Definition: atomic:798
#define assert(_Expression)
Definition: assert.h:41
template<>
void atomic_store_explicit ( volatile atomic< _ITYPE > *  _Atom,
_ITYPE  _Value,
memory_order  _Order 
)
inline
928  {
929  atomic_store_explicit(static_cast<volatile _ATOMIC_ITYPE *>(_Atom),
930  _Value, _Order);
931  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
void atomic_store_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
Definition: xxatomic:533
template<>
void atomic_store_explicit ( atomic< _ITYPE > *  _Atom,
_ITYPE  _Value,
memory_order  _Order 
)
inline
936  {
937  atomic_store_explicit(static_cast<_ATOMIC_ITYPE *>(_Atom),
938  _Value, _Order);
939  }
_CRTIMP _In_ int _Value
Definition: setjmp.h:190
void atomic_store_explicit(volatile _ATOMIC_ITYPE *_Atom, _ITYPE _Value, memory_order _Order) _NOEXCEPT
Definition: xxatomic:533