STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
Concurrency::details::_CancellationTokenRegistration Class Referenceabstract

#include <pplcancellation_token.h>

Inheritance diagram for Concurrency::details::_CancellationTokenRegistration:
Concurrency::details::_RefCounter Concurrency::details::_CancellationTokenCallback< _Function > Concurrency::details::CancellationTokenRegistration_TaskProc

Public Member Functions

 _CancellationTokenRegistration (long _InitialRefs=1)
 
_CancellationTokenState_GetToken () const
 
- Public Member Functions inherited from Concurrency::details::_RefCounter
virtual ~_RefCounter ()
 
long _Reference ()
 
long _Release ()
 

Protected Member Functions

virtual ~_CancellationTokenRegistration ()
 
virtual void _Exec ()=0
 
- Protected Member Functions inherited from Concurrency::details::_RefCounter
virtual void _Destroy ()
 
 _RefCounter (long _InitialCount=1)
 

Private Member Functions

void _Invoke ()
 

Private Attributes

atomic_long _M_state
 
extensibility::event_t_M_pSyncBlock
 
_CancellationTokenState_M_pTokenState
 

Static Private Attributes

static const long _STATE_CLEAR = 0
 
static const long _STATE_DEFER_DELETE = 1
 
static const long _STATE_SYNCHRONIZE = 2
 
static const long _STATE_CALLED = 3
 

Friends

class _CancellationTokenState
 

Additional Inherited Members

- Protected Attributes inherited from Concurrency::details::_RefCounter
volatile long _M_refCount
 

Constructor & Destructor Documentation

Concurrency::details::_CancellationTokenRegistration::_CancellationTokenRegistration ( long  _InitialRefs = 1)
inline
115  :
116  _RefCounter(_InitialRefs),
119  {
120  }
static const long _STATE_CALLED
Definition: pplcancellation_token.h:111
atomic_long _M_state
Definition: pplcancellation_token.h:161
#define NULL
Definition: crtdbg.h:30
_CancellationTokenState * _M_pTokenState
Definition: pplcancellation_token.h:163
_RefCounter(long _InitialCount=1)
Definition: pplcancellation_token.h:93
virtual Concurrency::details::_CancellationTokenRegistration::~_CancellationTokenRegistration ( )
inlineprotectedvirtual
130  {
132  }
atomic_long _M_state
Definition: pplcancellation_token.h:161
#define _ASSERTE(expr)
Definition: crtdbg.h:216
static const long _STATE_CLEAR
Definition: pplcancellation_token.h:108

Member Function Documentation

virtual void Concurrency::details::_CancellationTokenRegistration::_Exec ( )
protectedpure virtual
_CancellationTokenState* Concurrency::details::_CancellationTokenRegistration::_GetToken ( ) const
inline
123  {
124  return _M_pTokenState;
125  }
_CancellationTokenState * _M_pTokenState
Definition: pplcancellation_token.h:163
void Concurrency::details::_CancellationTokenRegistration::_Invoke ( )
inlineprivate
141  {
143  _ASSERTE((tid & 0x3) == 0); // If this ever fires, we need a different encoding for this.
144 
145  long result = atomic_compare_exchange(_M_state, tid, _STATE_CLEAR);
146 
147  if (result == _STATE_CLEAR)
148  {
149  _Exec();
150 
152 
153  if (result == _STATE_SYNCHRONIZE)
154  {
155  _M_pSyncBlock->set();
156  }
157  }
158  _Release();
159  }
static const long _STATE_CALLED
Definition: pplcancellation_token.h:111
static const long _STATE_SYNCHRONIZE
Definition: pplcancellation_token.h:110
atomic_long _M_state
Definition: pplcancellation_token.h:161
_T atomic_compare_exchange(std::atomic< _T > &_Target, _T _Exchange, _T _Comparand)
Definition: pplinterface.h:146
extensibility::event_t * _M_pSyncBlock
Definition: pplcancellation_token.h:162
_CRTIMP long __cdecl GetCurrentThreadId()
_CRTIMP void set()
Signals the event.
#define _ASSERTE(expr)
Definition: crtdbg.h:216
long _Release()
Definition: pplcancellation_token.h:71
static const long _STATE_CLEAR
Definition: pplcancellation_token.h:108

Friends And Related Function Documentation

friend class _CancellationTokenState
friend

Member Data Documentation

extensibility::event_t* Concurrency::details::_CancellationTokenRegistration::_M_pSyncBlock
private
_CancellationTokenState* Concurrency::details::_CancellationTokenRegistration::_M_pTokenState
private
atomic_long Concurrency::details::_CancellationTokenRegistration::_M_state
private
const long Concurrency::details::_CancellationTokenRegistration::_STATE_CALLED = 3
staticprivate
const long Concurrency::details::_CancellationTokenRegistration::_STATE_CLEAR = 0
staticprivate
const long Concurrency::details::_CancellationTokenRegistration::_STATE_DEFER_DELETE = 1
staticprivate
const long Concurrency::details::_CancellationTokenRegistration::_STATE_SYNCHRONIZE = 2
staticprivate

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