#include #include #include int global_shared; sem_t thread1_done; static void * thread1(void * _tn) { global_shared++; sem_post(&thread1_done); return NULL; } static void * thread2(void * _tn) { sem_wait(&thread1_done); global_shared++; return NULL; } int main() { int N = 2; pthread_t t[N]; sem_init(&thread1_done, 0, 0); pthread_create(t + 0, NULL, thread1, NULL); pthread_create(t + 1, NULL, thread2, NULL); pthread_join(t[0], NULL); pthread_join(t[1], NULL); printf("global_shared = %d\n", global_shared); return 0; }