diff options
Diffstat (limited to 'tests/rwlock6.c')
| -rw-r--r-- | tests/rwlock6.c | 34 | 
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;  }  | 
