STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Types | Public Member Functions | Public Attributes | List of all members
_Atomic_base< _Ty, _Bytes > Struct Template Reference
Inheritance diagram for _Atomic_base< _Ty, _Bytes >:
_Atomic_impl< _Bytes >

Public Types

typedef _Atomic_impl< _Bytes > _Mybase
 
typedef _Mybase::_My_int _My_int
 
- Public Types inherited from _Atomic_impl< _Bytes >
typedef _Uint1_t _My_int
 

Public Member Functions

constexpr _Atomic_base (_Ty _Val) _NOEXCEPT
 
 _Atomic_base () _NOEXCEPT=default
 
 _Atomic_base (const _Atomic_base &)=delete
 
_Atomic_baseoperator= (const _Atomic_base &)=delete
 
_Atomic_baseoperator= (const _Atomic_base &) volatile=delete
 
_Ty operator= (_Ty _Right) volatile _NOEXCEPT
 
_Ty operator= (_Ty _Right) _NOEXCEPT
 
bool is_lock_free () const volatile _NOEXCEPT
 
bool is_lock_free () const _NOEXCEPT
 
void store (_Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
 
void store (_Ty _Value, memory_order _Order=memory_order_seq_cst) _NOEXCEPT
 
_Ty load (memory_order _Order=memory_order_seq_cst) const volatile _NOEXCEPT
 
_Ty load (memory_order _Order=memory_order_seq_cst) const _NOEXCEPT
 
 operator _Ty () const volatile _NOEXCEPT
 
 operator _Ty () const _NOEXCEPT
 
_Ty exchange (_Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
 
_Ty exchange (_Ty _Value, memory_order _Order=memory_order_seq_cst) _NOEXCEPT
 
bool compare_exchange_weak (_Ty &_Exp, _Ty _Value, memory_order _Order1, memory_order _Order2) volatile _NOEXCEPT
 
bool compare_exchange_weak (_Ty &_Exp, _Ty _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
 
bool compare_exchange_weak (_Ty &_Exp, _Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
 
bool compare_exchange_weak (_Ty &_Exp, _Ty _Value, memory_order _Order=memory_order_seq_cst) _NOEXCEPT
 
bool compare_exchange_strong (_Ty &_Exp, _Ty _Value, memory_order _Order1, memory_order _Order2) volatile _NOEXCEPT
 
bool compare_exchange_strong (_Ty &_Exp, _Ty _Value, memory_order _Order1, memory_order _Order2) _NOEXCEPT
 
bool compare_exchange_strong (_Ty &_Exp, _Ty _Value, memory_order _Order=memory_order_seq_cst) volatile _NOEXCEPT
 
bool compare_exchange_strong (_Ty &_Exp, _Ty _Value, memory_order _Order=memory_order_seq_cst) _NOEXCEPT
 
- Public Member Functions inherited from _Atomic_impl< _Bytes >
constexpr _Atomic_impl () _NOEXCEPT
 
bool _Is_lock_free () const volatile
 
void _Store (void *_Tgt, const void *_Src, memory_order _Order) volatile
 
void _Load (void *_Tgt, const void *_Src, memory_order _Order) const volatile
 
void _Exchange (void *_Left, void *_Right, memory_order _Order) volatile
 
bool _Compare_exchange_weak (void *_Tgt, void *_Exp, const void *_Value, memory_order _Order1, memory_order _Order2) volatile
 
bool _Compare_exchange_strong (void *_Tgt, void *_Exp, const void *_Value, memory_order _Order1, memory_order _Order2) volatile
 

Public Attributes

_Ty _My_val
 

Member Typedef Documentation

template<class _Ty, unsigned _Bytes>
typedef _Mybase::_My_int _Atomic_base< _Ty, _Bytes >::_My_int
template<class _Ty, unsigned _Bytes>
typedef _Atomic_impl<_Bytes> _Atomic_base< _Ty, _Bytes >::_Mybase

Constructor & Destructor Documentation

template<class _Ty, unsigned _Bytes>
constexpr _Atomic_base< _Ty, _Bytes >::_Atomic_base ( _Ty  _Val)
inline
512  : _My_val(_Val)
513  { // construct from _Val, initialization is not an atomic operation
514  }
_Ty _My_val
Definition: atomic:662
_FwdIt const _Ty _Val
Definition: algorithm:1938
template<class _Ty, unsigned _Bytes>
_Atomic_base< _Ty, _Bytes >::_Atomic_base ( )
default
template<class _Ty, unsigned _Bytes>
_Atomic_base< _Ty, _Bytes >::_Atomic_base ( const _Atomic_base< _Ty, _Bytes > &  )
delete

Member Function Documentation

template<class _Ty, unsigned _Bytes>
bool _Atomic_base< _Ty, _Bytes >::compare_exchange_strong ( _Ty &  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
) volatile
inline
627  { // compare and exchange value stored in *this with *_Exp, _Value
628  return (this->_Compare_exchange_strong(
629  (void *)_STD addressof(_My_val), (void *)_STD addressof(_Exp), (const void *)_STD addressof(_Value),
630  _Order1, _Order2));
631  }
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_In_ _Value
Definition: corecrt_wstdlib.h:65
_Ty _My_val
Definition: atomic:662
bool _Compare_exchange_strong(void *_Tgt, void *_Exp, const void *_Value, memory_order _Order1, memory_order _Order2) volatile
Definition: atomic:304
template<class _Ty, unsigned _Bytes>
bool _Atomic_base< _Ty, _Bytes >::compare_exchange_strong ( _Ty &  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
635  { // compare and exchange value stored in *this with *_Exp, _Value
636  return (this->_Compare_exchange_strong(
637  (void *)_STD addressof(_My_val), (void *)_STD addressof(_Exp), (void *)_STD addressof(_Value),
638  _Order1, _Order2));
639  }
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_In_ _Value
Definition: corecrt_wstdlib.h:65
_Ty _My_val
Definition: atomic:662
bool _Compare_exchange_strong(void *_Tgt, void *_Exp, const void *_Value, memory_order _Order1, memory_order _Order2) volatile
Definition: atomic:304
template<class _Ty, unsigned _Bytes>
bool _Atomic_base< _Ty, _Bytes >::compare_exchange_strong ( _Ty &  _Exp,
_Ty  _Value,
memory_order  _Order = memory_order_seq_cst 
) volatile
inline
643  { // compare and exchange value stored in *this with *_Exp, _Value
644  return (compare_exchange_strong(
645  _Exp, _Value, _Order, _Get_memory_order(_Order)));
646  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_STD_BEGIN memory_order _Get_memory_order(memory_order _Order)
Definition: atomic:42
_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, unsigned _Bytes>
bool _Atomic_base< _Ty, _Bytes >::compare_exchange_strong ( _Ty &  _Exp,
_Ty  _Value,
memory_order  _Order = memory_order_seq_cst 
)
inline
650  { // compare and exchange value stored in *this with *_Exp, _Value
651  return (compare_exchange_strong(
652  _Exp, _Value, _Order, _Get_memory_order(_Order)));
653  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_STD_BEGIN memory_order _Get_memory_order(memory_order _Order)
Definition: atomic:42
_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, unsigned _Bytes>
bool _Atomic_base< _Ty, _Bytes >::compare_exchange_weak ( _Ty &  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
) volatile
inline
597  { // compare and exchange value stored in *this with *_Exp, _Value
598  return (this->_Compare_exchange_weak(
599  (void *)_STD addressof(_My_val), (void *)_STD addressof(_Exp), (const void *)_STD addressof(_Value),
600  _Order1, _Order2));
601  }
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_In_ _Value
Definition: corecrt_wstdlib.h:65
_Ty _My_val
Definition: atomic:662
bool _Compare_exchange_weak(void *_Tgt, void *_Exp, const void *_Value, memory_order _Order1, memory_order _Order2) volatile
Definition: atomic:296
template<class _Ty, unsigned _Bytes>
bool _Atomic_base< _Ty, _Bytes >::compare_exchange_weak ( _Ty &  _Exp,
_Ty  _Value,
memory_order  _Order1,
memory_order  _Order2 
)
inline
605  { // compare and exchange value stored in *this with *_Exp, _Value
606  return (this->_Compare_exchange_weak(
607  (void *)_STD addressof(_My_val), (void *)_STD addressof(_Exp), (const void *)_STD addressof(_Value),
608  _Order1, _Order2));
609  }
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_In_ _Value
Definition: corecrt_wstdlib.h:65
_Ty _My_val
Definition: atomic:662
bool _Compare_exchange_weak(void *_Tgt, void *_Exp, const void *_Value, memory_order _Order1, memory_order _Order2) volatile
Definition: atomic:296
template<class _Ty, unsigned _Bytes>
bool _Atomic_base< _Ty, _Bytes >::compare_exchange_weak ( _Ty &  _Exp,
_Ty  _Value,
memory_order  _Order = memory_order_seq_cst 
) volatile
inline
613  { // compare and exchange value stored in *this with *_Exp, _Value
614  return (compare_exchange_weak(
615  _Exp, _Value, _Order, _Get_memory_order(_Order)));
616  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_STD_BEGIN memory_order _Get_memory_order(memory_order _Order)
Definition: atomic:42
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, unsigned _Bytes>
bool _Atomic_base< _Ty, _Bytes >::compare_exchange_weak ( _Ty &  _Exp,
_Ty  _Value,
memory_order  _Order = memory_order_seq_cst 
)
inline
620  { // compare and exchange value stored in *this with *_Exp, _Value
621  return (compare_exchange_weak(
622  _Exp, _Value, _Order, _Get_memory_order(_Order)));
623  }
_CRTIMP2_PURE short __CLRCALL_PURE_OR_CDECL _Exp(double *, double, short)
_STD_BEGIN memory_order _Get_memory_order(memory_order _Order)
Definition: atomic:42
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, unsigned _Bytes>
_Ty _Atomic_base< _Ty, _Bytes >::exchange ( _Ty  _Value,
memory_order  _Order = memory_order_seq_cst 
) volatile
inline
583  { // exchange value stored in *this with _Value
584  this->_Exchange((void *)_STD addressof(_My_val), (void *)_STD addressof(_Value), _Order);
585  return (_Value);
586  }
void _Exchange(void *_Left, void *_Right, memory_order _Order) volatile
Definition: atomic:291
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
_In_ _Value
Definition: corecrt_wstdlib.h:65
_Ty _My_val
Definition: atomic:662
template<class _Ty, unsigned _Bytes>
_Ty _Atomic_base< _Ty, _Bytes >::exchange ( _Ty  _Value,
memory_order  _Order = memory_order_seq_cst 
)
inline
590  { // exchange value stored in *this with _Value
591  this->_Exchange((void *)_STD addressof(_My_val), (void *)_STD addressof(_Value), _Order);
592  return (_Value);
593  }
void _Exchange(void *_Left, void *_Right, memory_order _Order) volatile
Definition: atomic:291
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
_In_ _Value
Definition: corecrt_wstdlib.h:65
_Ty _My_val
Definition: atomic:662
template<class _Ty, unsigned _Bytes>
bool _Atomic_base< _Ty, _Bytes >::is_lock_free ( ) const volatile
inline
534  { // return true if operations are lock-free
535  return (this->_Is_lock_free());
536  }
bool _Is_lock_free() const volatile
Definition: atomic:275
template<class _Ty, unsigned _Bytes>
bool _Atomic_base< _Ty, _Bytes >::is_lock_free ( ) const
inline
539  { // return true if operations are lock-free
540  return (this->_Is_lock_free());
541  }
bool _Is_lock_free() const volatile
Definition: atomic:275
template<class _Ty, unsigned _Bytes>
_Ty _Atomic_base< _Ty, _Bytes >::load ( memory_order  _Order = memory_order_seq_cst) const volatile
inline
557  { // return value stored in *this
558  _Ty _Result;
559  this->_Load((void *)_STD addressof(_Result), (const void *)_STD addressof(_My_val), _Order);
560  return (_Result);
561  }
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
void _Load(void *_Tgt, const void *_Src, memory_order _Order) const volatile
Definition: atomic:285
_Ty _My_val
Definition: atomic:662
_Result
Definition: corecrt_wconio.h:362
template<class _Ty, unsigned _Bytes>
_Ty _Atomic_base< _Ty, _Bytes >::load ( memory_order  _Order = memory_order_seq_cst) const
inline
565  { // return value stored in *this
566  _Ty _Result;
567  this->_Load((void *)_STD addressof(_Result), (const void *)_STD addressof(_My_val), _Order);
568  return (_Result);
569  }
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
void _Load(void *_Tgt, const void *_Src, memory_order _Order) const volatile
Definition: atomic:285
_Ty _My_val
Definition: atomic:662
_Result
Definition: corecrt_wconio.h:362
template<class _Ty, unsigned _Bytes>
_Atomic_base< _Ty, _Bytes >::operator _Ty ( ) const volatile
inline
572  { // return value stored in *this
573  return (load());
574  }
_Ty load(memory_order _Order=memory_order_seq_cst) const volatile _NOEXCEPT
Definition: atomic:555
template<class _Ty, unsigned _Bytes>
_Atomic_base< _Ty, _Bytes >::operator _Ty ( ) const
inline
577  { // return value stored in *this
578  return (load());
579  }
_Ty load(memory_order _Order=memory_order_seq_cst) const volatile _NOEXCEPT
Definition: atomic:555
template<class _Ty, unsigned _Bytes>
_Atomic_base& _Atomic_base< _Ty, _Bytes >::operator= ( const _Atomic_base< _Ty, _Bytes > &  )
delete
template<class _Ty, unsigned _Bytes>
_Atomic_base& _Atomic_base< _Ty, _Bytes >::operator= ( const _Atomic_base< _Ty, _Bytes > &  ) volatile
delete
template<class _Ty, unsigned _Bytes>
_Ty _Atomic_base< _Ty, _Bytes >::operator= ( _Ty  _Right) volatile
inline
522  { // assign from _Right
524  return (_Right);
525  }
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
Definition: xatomic0.h:22
_Ty _My_val
Definition: atomic:662
void _Store(void *_Tgt, const void *_Src, memory_order _Order) volatile
Definition: atomic:280
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty, unsigned _Bytes>
_Ty _Atomic_base< _Ty, _Bytes >::operator= ( _Ty  _Right)
inline
528  { // assign from _Right
530  return (_Right);
531  }
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
Definition: xatomic0.h:22
_Ty _My_val
Definition: atomic:662
void _Store(void *_Tgt, const void *_Src, memory_order _Order) volatile
Definition: atomic:280
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Ty, unsigned _Bytes>
void _Atomic_base< _Ty, _Bytes >::store ( _Ty  _Value,
memory_order  _Order = memory_order_seq_cst 
) volatile
inline
545  { // store _Value into *this
546  this->_Store((void *)_STD addressof(_My_val), _STD addressof(_Value), _Order);
547  }
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
_In_ _Value
Definition: corecrt_wstdlib.h:65
_Ty _My_val
Definition: atomic:662
void _Store(void *_Tgt, const void *_Src, memory_order _Order) volatile
Definition: atomic:280
template<class _Ty, unsigned _Bytes>
void _Atomic_base< _Ty, _Bytes >::store ( _Ty  _Value,
memory_order  _Order = memory_order_seq_cst 
)
inline
551  { // store _Value into *this
552  this->_Store((void *)_STD addressof(_My_val), _STD addressof(_Value), _Order);
553  }
_STD_BEGIN constexpr _Ty * addressof(_Ty &_Val) _NOEXCEPT
Definition: xstddef:628
_In_ _Value
Definition: corecrt_wstdlib.h:65
_Ty _My_val
Definition: atomic:662
void _Store(void *_Tgt, const void *_Src, memory_order _Order) volatile
Definition: atomic:280

Member Data Documentation

template<class _Ty, unsigned _Bytes>
_Ty _Atomic_base< _Ty, _Bytes >::_My_val

The documentation for this struct was generated from the following file: