10 static void *a(void *obj)
12 pthread_mutex_lock(&x);
13 pthread_mutex_lock(&y);
14 printf("shared = %u\n", load_32(&shared));
15 pthread_mutex_unlock(&y);
16 pthread_mutex_unlock(&x);
20 static void *b(void *obj)
22 pthread_mutex_lock(&y);
23 pthread_mutex_lock(&x);
24 store_32(&shared, 16);
25 printf("write shared = 16\n");
26 pthread_mutex_unlock(&x);
27 pthread_mutex_unlock(&y);
31 int user_main(int argc, char **argv)
35 pthread_mutex_init(&x, NULL);
36 pthread_mutex_init(&y, NULL);
38 printf("Main thread: creating 2 threads\n");
39 pthread_create(&t1,NULL, &a, NULL);
40 pthread_create(&t2,NULL, &b, NULL);
42 pthread_join(t1,NULL);
43 pthread_join(t2,NULL);
44 printf("Main thread is finished\n");