diff options
author | rpj <rpj> | 2005-04-06 02:29:15 +0000 |
---|---|---|
committer | rpj <rpj> | 2005-04-06 02:29:15 +0000 |
commit | 13bd1e4d017a1c306e465219df9e245a4201726e (patch) | |
tree | d6d788a55449bd7ea1c5ea05f5af9bc0bbf9b2c7 /tests/cleanup1.c | |
parent | f19dd198df0106b07245d80d150a3d569b6cdf4d (diff) |
''
Diffstat (limited to 'tests/cleanup1.c')
-rw-r--r-- | tests/cleanup1.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/tests/cleanup1.c b/tests/cleanup1.c index 65645df..385aed9 100644 --- a/tests/cleanup1.c +++ b/tests/cleanup1.c @@ -92,7 +92,12 @@ struct bag_t_ { static bag_t threadbag[NUMTHREADS + 1]; -static int pop_count = 0; +typedef struct { + int i; + CRITICAL_SECTION cs; +} sharedInt_t; + +static sharedInt_t pop_count = {0, {0}}; static void #ifdef __CLEANUP_C @@ -100,9 +105,11 @@ __cdecl #endif increment_pop_count(void * arg) { - int * c = (int *) arg; + sharedInt_t * sI = (sharedInt_t *) arg; - (*c)++; + EnterCriticalSection(&sI->cs); + sI->i++; + LeaveCriticalSection(&sI->cs); } void * @@ -149,6 +156,8 @@ main() int i; pthread_t t[NUMTHREADS + 1]; + InitializeCriticalSection(&pop_count.cs); + assert((t[0] = pthread_self()).p != NULL); for (i = 1; i <= NUMTHREADS; i++) @@ -212,7 +221,9 @@ main() assert(!failed); - assert(pop_count == NUMTHREADS); + assert(pop_count.i == NUMTHREADS); + + DeleteCriticalSection(&pop_count.cs); /* * Success. |