STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Private Attributes | List of all members
condition_variable_any Class Reference

Public Member Functions

 condition_variable_any ()
 
 ~condition_variable_any () _NOEXCEPT
 
 condition_variable_any (const condition_variable_any &)=delete
 
condition_variable_anyoperator= (const condition_variable_any &)=delete
 
void notify_one () _NOEXCEPT
 
void notify_all () _NOEXCEPT
 
template<class _Mutex >
void wait (_Mutex &_Xtrnl)
 
template<class _Mutex , class _Predicate >
void wait (_Mutex &_Xtrnl, _Predicate _Pred)
 
template<class _Lock , class _Rep , class _Period >
_Cv_status wait_for (_Lock &_Lck, const chrono::duration< _Rep, _Period > &_Rel_time)
 
template<class _Lock , class _Rep , class _Period , class _Predicate >
bool wait_for (_Lock &_Lck, const chrono::duration< _Rep, _Period > &_Rel_time, _Predicate _Pred)
 
template<class _Lock , class _Clock , class _Duration >
_Cv_status wait_until (_Lock &_Lck, const chrono::time_point< _Clock, _Duration > &_Abs_time)
 
template<class _Lock , class _Clock , class _Duration , class _Predicate >
bool wait_until (_Lock &_Lck, const chrono::time_point< _Clock, _Duration > &_Abs_time, _Predicate _Pred)
 
template<class _Mutex >
_Cv_status wait_until (_Mutex &_Xtrnl, const xtime *_Abs_time)
 
template<class _Mutex , class _Predicate >
bool wait_until (_Mutex &_Xtrnl, const xtime *_Abs_time, _Predicate _Pred)
 

Private Attributes

_Cnd_t _Cnd
 
_Mtx_t _Mtx
 

Constructor & Destructor Documentation

condition_variable_any::condition_variable_any ( )
inline
160  { // construct
161  _Cnd_initX(&_Cnd);
162  _Auto_cnd _Cnd_cleaner(&_Cnd);
164  _Cnd_cleaner._Release();
165  }
Definition: xthreads.h:42
Definition: xthread:111
_Cnd_t _Cnd
Definition: condition_variable:291
int _Mtx_initX(_Mtx_t *_Mtx, int _Type)
Definition: xthread:61
int _Cnd_initX(_Cnd_t *_Cnd)
Definition: xthread:86
_Mtx_t _Mtx
Definition: condition_variable:292
condition_variable_any::~condition_variable_any ( )
inline
168  { // destroy
169  _Mtx_destroy(&_Mtx);
170  _Cnd_destroy(&_Cnd);
171  }
_Cnd_t _Cnd
Definition: condition_variable:291
_CRTIMP2_PURE void __cdecl _Mtx_destroy(_Mtx_t *)
_CRTIMP2_PURE void __cdecl _Cnd_destroy(_Cnd_t *)
_Mtx_t _Mtx
Definition: condition_variable:292
condition_variable_any::condition_variable_any ( const condition_variable_any )
delete

Member Function Documentation

void condition_variable_any::notify_all ( )
inline
186  { // wake up all waiters
187  _Mtx_lockX(&_Mtx);
189  _Mtx_unlockX(&_Mtx);
190  }
int _Cnd_broadcastX(_Cnd_t *_Cnd)
Definition: xthread:101
int _Mtx_lockX(_Mtx_t *_Mtx)
Definition: xthread:66
_Cnd_t _Cnd
Definition: condition_variable:291
int _Mtx_unlockX(_Mtx_t *_Mtx)
Definition: xthread:81
_Mtx_t _Mtx
Definition: condition_variable:292
void condition_variable_any::notify_one ( )
inline
179  { // wake up one waiter
180  _Mtx_lockX(&_Mtx);
181  _Cnd_signalX(&_Cnd);
182  _Mtx_unlockX(&_Mtx);
183  }
int _Mtx_lockX(_Mtx_t *_Mtx)
Definition: xthread:66
_Cnd_t _Cnd
Definition: condition_variable:291
int _Cnd_signalX(_Cnd_t *_Cnd)
Definition: xthread:106
int _Mtx_unlockX(_Mtx_t *_Mtx)
Definition: xthread:81
_Mtx_t _Mtx
Definition: condition_variable:292
condition_variable_any& condition_variable_any::operator= ( const condition_variable_any )
delete
template<class _Mutex >
void condition_variable_any::wait ( _Mutex &  _Xtrnl)
inline
194  { // wait for signal
195  _Mtx_lockX(&_Mtx);
196  _Xtrnl.unlock();
197  _Cnd_waitX(&_Cnd, &_Mtx);
198  _Mtx_unlockX(&_Mtx);
199  _Xtrnl.lock();
200  }
int _Mtx_lockX(_Mtx_t *_Mtx)
Definition: xthread:66
_Cnd_t _Cnd
Definition: condition_variable:291
int _Cnd_waitX(_Cnd_t *_Cnd, _Mtx_t *_Mtx)
Definition: xthread:91
int _Mtx_unlockX(_Mtx_t *_Mtx)
Definition: xthread:81
_Mtx_t _Mtx
Definition: condition_variable:292
template<class _Mutex , class _Predicate >
void condition_variable_any::wait ( _Mutex &  _Xtrnl,
_Predicate  _Pred 
)
inline
205  { // wait for signal and check predicate
206  while (!_Pred())
207  wait(_Xtrnl);
208  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
void wait(_Mutex &_Xtrnl)
Definition: condition_variable:193
template<class _Lock , class _Rep , class _Period >
_Cv_status condition_variable_any::wait_for ( _Lock &  _Lck,
const chrono::duration< _Rep, _Period > &  _Rel_time 
)
inline
216  { // wait for duration
217  stdext::threads::xtime _Tgt = _To_xtime(_Rel_time);
218  return (wait_until(_Lck, &_Tgt));
219  }
xtime _To_xtime(const chrono::duration< _Rep, _Period > &_Rel_time)
Definition: chrono:736
struct xtime xtime
_Cv_status wait_until(_Lock &_Lck, const chrono::time_point< _Clock, _Duration > &_Abs_time)
Definition: condition_variable:239
template<class _Lock , class _Rep , class _Period , class _Predicate >
bool condition_variable_any::wait_for ( _Lock &  _Lck,
const chrono::duration< _Rep, _Period > &  _Rel_time,
_Predicate  _Pred 
)
inline
229  { // wait for signal with timeout and check predicate
230  bool _Res = true;
231  while (_Res && !_Pred())
232  _Res = wait_for(_Lck, _Rel_time) != cv_status::timeout;
233  return (_Pred());
234  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_Cv_status wait_for(_Lock &_Lck, const chrono::duration< _Rep, _Period > &_Rel_time)
Definition: condition_variable:213
template<class _Lock , class _Clock , class _Duration >
_Cv_status condition_variable_any::wait_until ( _Lock &  _Lck,
const chrono::time_point< _Clock, _Duration > &  _Abs_time 
)
inline
242  { // wait until time point
244  _Rel_time = _Abs_time - _Clock::now();
245  return (wait_for(_Lck, _Rel_time));
246  }
_Cv_status wait_for(_Lock &_Lck, const chrono::duration< _Rep, _Period > &_Rel_time)
Definition: condition_variable:213
_Duration duration
Definition: chrono:246
template<class _Lock , class _Clock , class _Duration , class _Predicate >
bool condition_variable_any::wait_until ( _Lock &  _Lck,
const chrono::time_point< _Clock, _Duration > &  _Abs_time,
_Predicate  _Pred 
)
inline
256  { // wait for signal with timeout and check predicate
257  bool _Res = true;
258  while (_Res && !_Pred())
259  _Res = wait_until(_Lck, _Abs_time) != cv_status::timeout;
260  return (_Pred());
261  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_Cv_status wait_until(_Lock &_Lck, const chrono::time_point< _Clock, _Duration > &_Abs_time)
Definition: condition_variable:239
template<class _Mutex >
_Cv_status condition_variable_any::wait_until ( _Mutex &  _Xtrnl,
const xtime _Abs_time 
)
inline
267  { // wait for signal with timeout
268  _Mtx_lock(&_Mtx);
269  _Xtrnl.unlock();
270  int _Res = _Cnd_timedwaitX(&_Cnd, &_Mtx, _Abs_time);
271  _Mtx_unlock(&_Mtx);
272  _Xtrnl.lock();
273  return (_Res == _Thrd_timedout
275  }
int _Cnd_timedwaitX(_Cnd_t *_Cnd, _Mtx_t *_Mtx, const xtime *_Xt)
Definition: xthread:96
_Cnd_t _Cnd
Definition: condition_variable:291
_CRTIMP2_PURE int __cdecl _Mtx_unlock(_Mtx_t *)
_CRTIMP2_PURE int __cdecl _Mtx_lock(_Mtx_t *)
Definition: xthreads.h:19
_Mtx_t _Mtx
Definition: condition_variable:292
template<class _Mutex , class _Predicate >
bool condition_variable_any::wait_until ( _Mutex &  _Xtrnl,
const xtime _Abs_time,
_Predicate  _Pred 
)
inline
283  { // wait for signal with timeout and check predicate
284  bool _Res = true;
285  while (_Res && !_Pred())
286  _Res = wait_until(_Xtrnl, _Abs_time) != cv_status::timeout;
287  return (_Pred());
288  }
_FwdIt const _Ty _Pr _Pred
Definition: algorithm:1985
_Cv_status wait_until(_Lock &_Lck, const chrono::time_point< _Clock, _Duration > &_Abs_time)
Definition: condition_variable:239

Member Data Documentation

_Cnd_t condition_variable_any::_Cnd
private
_Mtx_t condition_variable_any::_Mtx
private

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