diff options
Diffstat (limited to 'pthreads/tests/semaphore3.c')
-rw-r--r-- | pthreads/tests/semaphore3.c | 61 |
1 files changed, 32 insertions, 29 deletions
diff --git a/pthreads/tests/semaphore3.c b/pthreads/tests/semaphore3.c index a0dfcb6f6..842313066 100644 --- a/pthreads/tests/semaphore3.c +++ b/pthreads/tests/semaphore3.c @@ -6,10 +6,11 @@ * * Pthreads-win32 - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999,2012 Pthreads-win32 contributors + * + * Homepage1: http://sourceware.org/pthreads-win32/ + * Homepage2: http://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the @@ -80,41 +81,43 @@ sem_t s; void * thr (void * arg) { - assert(sem_wait(&s) == 0); assert(pthread_detach(pthread_self()) == 0); + assert(sem_wait(&s) == 0); return NULL; } int main() { - int value = 0; - int i; - pthread_t t[MAX_COUNT+1]; + int value = 0; + int i; + pthread_t t[MAX_COUNT+1]; - assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); - assert(sem_getvalue(&s, &value) == 0); -// printf("Value = %d\n", value); fflush(stdout); - assert(value == 0); + assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); + assert(sem_getvalue(&s, &value) == 0); + //printf("Value = %d\n", value); fflush(stdout); + assert(value == 0); - for (i = 1; i <= MAX_COUNT; i++) - { - assert(pthread_create(&t[i], NULL, thr, NULL) == 0); - do { - sched_yield(); - assert(sem_getvalue(&s, &value) == 0); - } while (value != -i); -// printf("Value = %d\n", value); fflush(stdout); - assert(-value == i); - } + for (i = 1; i <= MAX_COUNT; i++) + { + assert(pthread_create(&t[i], NULL, thr, NULL) == 0); + do + { + sched_yield(); + assert(sem_getvalue(&s, &value) == 0); + } + while (value != -i); + //printf("1:Value = %d\n", value); fflush(stdout); + assert(-value == i); + } - for (i = MAX_COUNT - 1; i >= 0; i--) - { - assert(sem_post(&s) == 0); - assert(sem_getvalue(&s, &value) == 0); -// printf("Value = %d\n", value); fflush(stdout); - assert(-value == i); - } + for (i = MAX_COUNT - 1; i >= 0; i--) + { + assert(sem_post(&s) == 0); + assert(sem_getvalue(&s, &value) == 0); + //printf("2:Value = %d\n", value); fflush(stdout); + assert(-value == i); + } return 0; } |