Lines Matching refs:condition
131 static int pthread_cond_destroy(pthread_cond_t* const condition) { in pthread_cond_destroy() argument
134 (void)condition; in pthread_cond_destroy()
136 ok &= (CloseHandle(condition->waiting_sem_) != 0); in pthread_cond_destroy()
137 ok &= (CloseHandle(condition->received_sem_) != 0); in pthread_cond_destroy()
138 ok &= (CloseHandle(condition->signal_event_) != 0); in pthread_cond_destroy()
143 static int pthread_cond_init(pthread_cond_t* const condition, void* cond_attr) { in pthread_cond_init() argument
146 InitializeConditionVariable(condition); in pthread_cond_init()
148 condition->waiting_sem_ = CreateSemaphore(NULL, 0, 1, NULL); in pthread_cond_init()
149 condition->received_sem_ = CreateSemaphore(NULL, 0, 1, NULL); in pthread_cond_init()
150 condition->signal_event_ = CreateEvent(NULL, FALSE, FALSE, NULL); in pthread_cond_init()
151 if (condition->waiting_sem_ == NULL || in pthread_cond_init()
152 condition->received_sem_ == NULL || in pthread_cond_init()
153 condition->signal_event_ == NULL) { in pthread_cond_init()
154 pthread_cond_destroy(condition); in pthread_cond_init()
161 static int pthread_cond_signal(pthread_cond_t* const condition) { in pthread_cond_signal() argument
164 WakeConditionVariable(condition); in pthread_cond_signal()
166 if (WaitForSingleObject(condition->waiting_sem_, 0) == WAIT_OBJECT_0) { in pthread_cond_signal()
168 ok = SetEvent(condition->signal_event_); in pthread_cond_signal()
171 ok &= (WaitForSingleObject(condition->received_sem_, INFINITE) != in pthread_cond_signal()
178 static int pthread_cond_wait(pthread_cond_t* const condition, in pthread_cond_wait() argument
182 ok = SleepConditionVariableCS(condition, mutex, INFINITE); in pthread_cond_wait()
186 if (!ReleaseSemaphore(condition->waiting_sem_, 1, NULL)) return 1; in pthread_cond_wait()
189 ok = (WaitForSingleObject(condition->signal_event_, INFINITE) == in pthread_cond_wait()
191 ok &= ReleaseSemaphore(condition->received_sem_, 1, NULL); in pthread_cond_wait()