Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Diff of /tests/once3.c [1beb00] .. [9e61bc] Maximize Restore

  Switch to side-by-side view

--- 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:
@@ -44,6 +44,8 @@
  *      pthread_cancel()
  *      pthread_once()
  */
+
+#define ASSERT_TRACE
 
 #include "test.h"
 
@@ -66,6 +68,7 @@
 {
   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 @@
 {
   /*
    * 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++;