00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_CSUTIL_THREADING_CONDITION_H__
00020 #define __CS_CSUTIL_THREADING_CONDITION_H__
00021
00022
00023 #if defined(CS_PLATFORM_WIN32)
00024 # include "csutil/threading/win32_condition.h"
00025 #elif defined(CS_PLATFORM_UNIX) || \
00026 defined(CS_PLATFORM_MACOSX)
00027 # include "csutil/threading/pthread_condition.h"
00028 #else
00029 #error "No threading implementation for your platform"
00030 #endif
00031
00032
00033 namespace CS
00034 {
00035 namespace Threading
00036 {
00037
00043 class Condition : private Implementation::ConditionBase,
00044 private CS::NonCopyable
00045 {
00046 public:
00047 Condition ()
00048 {
00049 }
00050
00054 void NotifyOne ()
00055 {
00056 ConditionBase::NotifyOne ();
00057 }
00058
00063 void NotifyAll ()
00064 {
00065 ConditionBase::NotifyAll ();
00066 }
00067
00092 template<typename LockType>
00093 bool Wait (LockType& lock, csTicks timeout = 0)
00094 {
00095 return ConditionBase::Wait (lock, timeout);
00096 }
00097 };
00098
00099 }
00100 }
00101
00102
00103 #endif