From 8c8bcc5d1737002a9d153105c16b262d2e201efa Mon Sep 17 00:00:00 2001 From: rpj Date: Tue, 19 Oct 2004 13:24:40 +0000 Subject: Semaphore speedups - alpha, but passes testsuite --- sem_wait.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'sem_wait.c') diff --git a/sem_wait.c b/sem_wait.c index e2e171c..0c2ed59 100644 --- a/sem_wait.c +++ b/sem_wait.c @@ -92,8 +92,14 @@ sem_wait (sem_t * sem) #else /* NEED_SEM */ - result = pthreadCancelableWait ((*sem)->sem); - + sem_t s = *sem; + + if (InterlockedDecrement((LPLONG) &s->value) < 0) + { + /* Must wait */ + result = pthreadCancelableWait (s->sem); + } + #endif /* NEED_SEM */ } -- cgit v1.2.3