Home | History | Annotate | Download | only in tests
      1 
      2 #include <pthread.h>
      3 #include <stdio.h>
      4 #include <stdlib.h>
      5 
      6 /* Simple test program, no race: parent only modified x after child
      7    has modified it and then joined with the parent.  Tests simple
      8    thread lifetime segment handling. */
      9 
     10 int x = 0;
     11 
     12 void* child_fn ( void* arg )
     13 {
     14    /* Unprotected relative to parent, but in child's segment only */
     15    x++;
     16    return NULL;
     17 }
     18 
     19 int main ( void )
     20 {
     21    pthread_t child;
     22 
     23    x++; /* happens in parent's segment */
     24 
     25    if (pthread_create(&child, NULL, child_fn, NULL)) {
     26       perror("pthread_create");
     27       exit(1);
     28    }
     29 
     30    if (pthread_join(child, NULL)) {
     31       perror("pthread join");
     32       exit(1);
     33    }
     34 
     35    /* Now back in parent's segment */
     36    x++;
     37 
     38    return 0;
     39 }
     40