blob: a23b14c172537d95079b8fa6d257fc9c918743a2 [file] [log] [blame]
sewardjb4112022007-11-09 22:49:28 +00001
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
10int x = 0;
11
12void* child_fn ( void* arg )
13{
14 /* Unprotected relative to parent, but in child's segment only */
15 x++;
16 return NULL;
17}
18
19int 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}