aboutsummaryrefslogtreecommitdiff
path: root/pthreads/tests/semaphore3.c
diff options
context:
space:
mode:
Diffstat (limited to 'pthreads/tests/semaphore3.c')
-rw-r--r--pthreads/tests/semaphore3.c61
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;
}