rthreads.c - Take out code that is prone to deadlocks
This commit is contained in:
parent
0b926373ce
commit
55c898b880
|
@ -313,12 +313,7 @@ void scond_wait(scond_t *cond, slock_t *lock)
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WaitForSingleObject(cond->event, 0);
|
WaitForSingleObject(cond->event, 0);
|
||||||
|
|
||||||
#if MSC_VER <= 1310
|
|
||||||
slock_unlock(lock);
|
|
||||||
WaitForSingleObject(cond->event, INFINITE);
|
|
||||||
#else
|
|
||||||
SignalObjectAndWait(lock->lock, cond->event, INFINITE, FALSE);
|
SignalObjectAndWait(lock->lock, cond->event, INFINITE, FALSE);
|
||||||
#endif
|
|
||||||
slock_lock(lock);
|
slock_lock(lock);
|
||||||
#else
|
#else
|
||||||
pthread_cond_wait(&cond->cond, &lock->lock);
|
pthread_cond_wait(&cond->cond, &lock->lock);
|
||||||
|
@ -378,13 +373,8 @@ bool scond_wait_timeout(scond_t *cond, slock_t *lock, int64_t timeout_us)
|
||||||
DWORD ret;
|
DWORD ret;
|
||||||
|
|
||||||
WaitForSingleObject(cond->event, 0);
|
WaitForSingleObject(cond->event, 0);
|
||||||
#if MSC_VER <= 1310
|
|
||||||
slock_unlock(lock);
|
|
||||||
ret = WaitForSingleObject(cond->event, (DWORD)(timeout_us) / 1000);
|
|
||||||
#else
|
|
||||||
ret = SignalObjectAndWait(lock->lock, cond->event,
|
ret = SignalObjectAndWait(lock->lock, cond->event,
|
||||||
(DWORD)(timeout_us) / 1000, FALSE);
|
(DWORD)(timeout_us) / 1000, FALSE);
|
||||||
#endif
|
|
||||||
|
|
||||||
slock_lock(lock);
|
slock_lock(lock);
|
||||||
return ret == WAIT_OBJECT_0;
|
return ret == WAIT_OBJECT_0;
|
||||||
|
|
Loading…
Reference in New Issue