12 #ifndef __UT_Condition_h__
13 #define __UT_Condition_h__
37 template<
typename Predicate>
46 void waitForTrigger(
UT_Lock &lock);
50 bool waitForTriggerMS(
UT_Lock &lock,
int64 timeout_msec);
71 #if defined(USE_PTHREADS)
72 pthread_cond_t myCond;
76 #error Missing implementation
90 UT_VERIFY(pthread_cond_init(&myCond, 0) == 0);
101 UT_VERIFY(pthread_cond_destroy(&myCond) == 0);
108 UT_VERIFY(pthread_cond_wait(&myCond, &lock.myLock) == 0);
115 UT_VERIFY(pthread_cond_broadcast(&myCond) == 0);
122 UT_VERIFY(pthread_cond_signal(&myCond) == 0);
125 #endif // USE_PTHREADS
136 struct _RTL_CONDITION_VARIABLE;
137 using CONDITION_VARIABLE = _RTL_CONDITION_VARIABLE;
139 __declspec(dllimport)
void __stdcall
140 WakeConditionVariable(CONDITION_VARIABLE *ConditionVariable);
141 __declspec(dllimport)
void __stdcall
142 WakeAllConditionVariable(CONDITION_VARIABLE *ConditionVariable);
170 return lock.sleepMS(
this, timeout_ms);
177 WakeAllConditionVariable((CONDITION_VARIABLE*) &myCond);
184 WakeConditionVariable((CONDITION_VARIABLE*) &myCond);
189 #endif // __UT_Condition_h__
bool waitForTriggerMS(UT_Lock &lock, int64 timeout_msec)
OIIO_UTIL_API bool copy(string_view from, string_view to, std::string &err)
Condition synchronization primitive.
void waitForTrigger(UT_Lock &lock)
LeafData & operator=(const LeafData &)=delete
void wait(UT_Lock &lock, const Predicate &pred)