#include #include #include #include sem_t thread_sem1; sem_t thread_sem2; void * thread_function1(void *arg); void * thread_function2(void *arg); int main(int argc, char *argv[]) { int i = 1; int j = 2; pthread_t thread2; sem_init(&thread_sem1, 0, 1); sem_init(&thread_sem2, 0, 0); pthread_create(&thread2, NULL, thread_function2, (void *)&j); thread_function1((void *)&i); return(0); } void * thread_function1(void *arg) { while(1) { sem_wait(&thread_sem1); printf("Thread %d running\n", *(int *)arg); sem_post(&thread_sem2); } } void * thread_function2(void *arg) { while(1) { sem_wait(&thread_sem2); printf("Thread %d running\n", *(int *)arg); sem_post(&thread_sem1); } }