summaryrefslogtreecommitdiff
path: root/tests/barrier4.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/barrier4.c')
-rw-r--r--tests/barrier4.c39
1 files changed, 23 insertions, 16 deletions
diff --git a/tests/barrier4.c b/tests/barrier4.c
index 1dd8291..8f33e85 100644
--- a/tests/barrier4.c
+++ b/tests/barrier4.c
@@ -14,12 +14,11 @@ enum {
pthread_barrier_t barrier = NULL;
pthread_mutex_t mx = PTHREAD_MUTEX_INITIALIZER;
-static int result1 = -1;
-static int result2 = -1;
static int serialThreadCount = 0;
static int otherThreadCount = 0;
-void * func(void * arg)
+void *
+func(void * arg)
{
int result = pthread_barrier_wait(&barrier);
@@ -32,31 +31,39 @@ void * func(void * arg)
{
otherThreadCount++;
}
- assert(pthread_mutex_lock(&mx) == 0);
+ assert(pthread_mutex_unlock(&mx) == 0);
return NULL;
}
-
+
int
main()
{
+ int i, j;
pthread_t t[NUMTHREADS + 1];
- assert(pthread_barrier_init(&barrier, NULL, NUMTHREADS) == 0);
-
- for (i = 0; i < NUMTHREADS; i++)
+ for (j = 1; j <= NUMTHREADS; j++)
{
- assert(pthread_create(&t[i], NULL, func, NULL) == 0);
- }
+ printf("Barrier height = %d\n", j);
- for (i = 0; i < NUMTHREADS; i++)
- {
- assert(pthread_join(t[i], NULL) == 0);
- }
+ serialThreadCount = 0;
+
+ assert(pthread_barrier_init(&barrier, NULL, j) == 0);
+
+ for (i = 1; i <= j; i++)
+ {
+ assert(pthread_create(&t[i], NULL, func, NULL) == 0);
+ }
- assert(serialThreadCount == 1);
+ for (i = 1; i <= j; i++)
+ {
+ assert(pthread_join(t[i], NULL) == 0);
+ }
- assert(pthread_barrier_destroy(&barrier) == 0);
+ assert(serialThreadCount == 1);
+
+ assert(pthread_barrier_destroy(&barrier) == 0);
+ }
assert(pthread_mutex_destroy(&mx) == 0);