1 #include <pthread.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <unistd.h>
5
6 char *pointer;
7
nothing(void * p)8 void *nothing(void *p) {
9 return NULL;
10 }
11
f1(void * p)12 void *f1(void *p) {
13 pointer[0] = 'x';
14 sleep(100);
15 return NULL;
16 }
17
f2(void * p)18 void *f2(void *p) {
19 pointer[0] = 'y';
20 sleep(100);
21 return NULL;
22 }
23
main(int argc,char const * argv[])24 int main (int argc, char const *argv[])
25 {
26 pointer = (char *)malloc(10);
27
28 for (int i = 0; i < 3; i++) {
29 pthread_t t;
30 pthread_create(&t, NULL, nothing, NULL);
31 pthread_join(t, NULL);
32 }
33
34 pthread_t t1;
35 pthread_create(&t1, NULL, f1, NULL);
36
37 for (int i = 0; i < 3; i++) {
38 pthread_t t;
39 pthread_create(&t, NULL, nothing, NULL);
40 pthread_join(t, NULL);
41 }
42
43 pthread_t t2;
44 pthread_create(&t2, NULL, f2, NULL);
45
46 pthread_join(t1, NULL);
47 pthread_join(t2, NULL);
48
49 return 0;
50 }
51