Lines Matching defs:cv
105 http://www.cse.wustl.edu/~schmidt/win32-cv-1.html
138 PyCOND_INIT(PyCOND_T *cv)
144 cv->sem = CreateSemaphore(NULL, 0, 100000, NULL);
145 if (cv->sem==NULL)
147 cv->waiting = 0;
152 PyCOND_FINI(PyCOND_T *cv)
154 return CloseHandle(cv->sem) ? 0 : -1;
161 _PyCOND_WAIT_MS(PyCOND_T *cv, PyMUTEX_T *cs, DWORD ms)
164 cv->waiting++;
170 wait = WaitForSingleObjectEx(cv->sem, ms, FALSE);
173 --cv->waiting;
192 PyCOND_WAIT(PyCOND_T *cv, PyMUTEX_T *cs)
194 int result = _PyCOND_WAIT_MS(cv, cs, INFINITE);
199 PyCOND_TIMEDWAIT(PyCOND_T *cv, PyMUTEX_T *cs, long long us)
201 return _PyCOND_WAIT_MS(cv, cs, (DWORD)(us/1000));
205 PyCOND_SIGNAL(PyCOND_T *cv)
211 if (cv->waiting > 0) {
212 /* notifying thread decreases the cv->waiting count so that
216 cv->waiting--;
217 return ReleaseSemaphore(cv->sem, 1, NULL) ? 0 : -1;
223 PyCOND_BROADCAST(PyCOND_T *cv)
225 int waiting = cv->waiting;
227 cv->waiting = 0;
228 return ReleaseSemaphore(cv->sem, waiting, NULL) ? 0 : -1;
264 PyCOND_INIT(PyCOND_T *cv)
266 InitializeConditionVariable(cv);
270 PyCOND_FINI(PyCOND_T *cv)
276 PyCOND_WAIT(PyCOND_T *cv, PyMUTEX_T *cs)
278 return SleepConditionVariableSRW(cv, cs, INFINITE, 0) ? 0 : -1;
285 PyCOND_TIMEDWAIT(PyCOND_T *cv, PyMUTEX_T *cs, long long us)
287 return SleepConditionVariableSRW(cv, cs, (DWORD)(us/1000), 0) ? 2 : -1;
291 PyCOND_SIGNAL(PyCOND_T *cv)
293 WakeConditionVariable(cv);
298 PyCOND_BROADCAST(PyCOND_T *cv)
300 WakeAllConditionVariable(cv);