summaryrefslogtreecommitdiff
path: root/tests/rwlock6.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/rwlock6.c')
-rw-r--r--tests/rwlock6.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/tests/rwlock6.c b/tests/rwlock6.c
index 7daccd7..3f53520 100644
--- a/tests/rwlock6.c
+++ b/tests/rwlock6.c
@@ -1,30 +1,30 @@
-/*
+/*
* rwlock6.c
*
* Check that writer locks have priority.
*
* Depends on API functions:
- * pthread_rwlock_rdlock()
- * pthread_rwlock_wrlock()
- * pthread_rwlock_unlock()
+ * pthread_rwlock_rdlock()
+ * pthread_rwlock_wrlock()
+ * pthread_rwlock_unlock()
*/
#include "test.h"
-
+
static pthread_rwlock_t rwlock1 = PTHREAD_RWLOCK_INITIALIZER;
-static int bankAccount;
+static int bankAccount = 0;
void * wrfunc(void * arg)
{
assert(pthread_rwlock_wrlock(&rwlock1) == 0);
- Sleep(1000);
+ Sleep(2000);
bankAccount += 10;
assert(pthread_rwlock_unlock(&rwlock1) == 0);
- return((void *) bankAccount);
+ return ((void *) bankAccount);
}
-
+
void * rdfunc(void * arg)
{
int ba = 0;
@@ -34,9 +34,9 @@ void * rdfunc(void * arg)
assert(pthread_rwlock_unlock(&rwlock1) == 0);
ba += 10;
- return((void *) ba);
+ return ((void *) ba);
}
-
+
int
main()
{
@@ -47,11 +47,13 @@ main()
int wr2Result = 0;
int rdResult = 0;
+ bankAccount = 0;
+
assert(pthread_create(&wrt1, NULL, wrfunc, NULL) == 0);
- Sleep(200);
- assert(pthread_create(&rdt, NULL, rdfunc, NULL) == 0);
- Sleep(200);
- assert(pthread_create(&wrt2, NULL, wrfunc, NULL) == 0);
+ Sleep(500);
+ assert(pthread_create(&wrt2, NULL, rdfunc, NULL) == 0);
+ Sleep(500);
+ assert(pthread_create(&rdt, NULL, wrfunc, NULL) == 0);
assert(pthread_join(wrt1, (void **) &wr1Result) == 0);
assert(pthread_join(wrt2, (void **) &wr2Result) == 0);
@@ -59,7 +61,7 @@ main()
assert(wr1Result == 10);
assert(wr2Result == 20);
- assert(rdResult == 30);
+ assert(rdResult == 20);
return 0;
}