diff options
Diffstat (limited to 'tests/mutex3.c')
| -rw-r--r-- | tests/mutex3.c | 42 | 
1 files changed, 37 insertions, 5 deletions
| diff --git a/tests/mutex3.c b/tests/mutex3.c index 2bb6106..26cb070 100644 --- a/tests/mutex3.c +++ b/tests/mutex3.c @@ -1,12 +1,44 @@ -#include <pthread.h> +/*  + * mutex3.c + * + * Declare a static mutex object, lock it, trylock it,  + * and then unlock it again. + * + * Depends on API functions:  + *	pthread_mutex_lock() + *	pthread_mutex_trylock() + *	pthread_mutex_unlock() + */ -pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; +#include "test.h" +  +pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; +static int washere = 0; + +void * func(void * arg) +{ +  assert(pthread_mutex_trylock(&mutex1) == EBUSY); + +  washere = 1; + +  return 0;  +} +   int  main()  { -  pthread_mutex_lock(&mutex); -  /* do stuff */ -  pthread_mutex_unlock(&mutex); +  pthread_t t; + +  assert(pthread_mutex_lock(&mutex1) == 0); + +  assert(pthread_create(&t, NULL, func, NULL) == 0); + +  Sleep(2000); + +  assert(pthread_mutex_unlock(&mutex1) == 0); + +  assert(washere == 1); +    return 0;  } | 
