diff options
author | rpj <rpj> | 2006-12-22 02:36:40 +0000 |
---|---|---|
committer | rpj <rpj> | 2006-12-22 02:36:40 +0000 |
commit | 9e61bc0571b4812381cf89dd6f4bcbe3931f6acd (patch) | |
tree | 2b60eec9340369ed259a9d1de422ac5ec3eb9291 /tests/once3.c | |
parent | 1beb00e609d241ee6c2048c476e2240f05033cbd (diff) |
Diffstat (limited to 'tests/once3.c')
-rw-r--r-- | tests/once3.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/tests/once3.c b/tests/once3.c index 51d2daa..981bbf7 100644 --- a/tests/once3.c +++ b/tests/once3.c @@ -34,7 +34,7 @@ * -------------------------------------------------------------------------- * * Create several pthread_once objects and channel several threads - * through each. Make the init_routine cancelable and cancel them + * through each. Make the init_routine cancelable and cancel them with * waiters waiting. * * Depends on API functions: @@ -45,6 +45,8 @@ * pthread_once() */ +#define ASSERT_TRACE + #include "test.h" #define NUM_THREADS 100 /* Targeting each once control */ @@ -66,6 +68,7 @@ myfunc(void) { EnterCriticalSection(&numOnce.cs); numOnce.i++; + assert(numOnce.i > 0); LeaveCriticalSection(&numOnce.cs); /* Simulate slow once routine so that following threads pile up behind it */ Sleep(10); @@ -78,11 +81,11 @@ mythread(void * arg) { /* * Cancel every thread. These threads are deferred cancelable only, so - * only the thread performing the init_routine will see it (there are + * only the thread performing the once routine (my_func) will see it (there are * no other cancelation points here). The result will be that every thread - * eventually cancels only when it becomes the new initter. + * eventually cancels only when it becomes the new once thread. */ - pthread_cancel(pthread_self()); + assert(pthread_cancel(pthread_self()) == 0); assert(pthread_once(&once[(int) arg], myfunc) == 0); EnterCriticalSection(&numThreads.cs); numThreads.i++; |