#include #include #include #include pthread_mutex_t print_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; void* thread_one(void* param){ sleep(1); pthread_mutex_lock(&print_mutex); pthread_mutex_lock(&print_mutex); puts("Gorilla"); pthread_mutex_unlock(&print_mutex); pthread_mutex_unlock(&print_mutex); } void* thread_two(void* param){ char *word = "rabbit"; pthread_mutex_lock(&print_mutex); for(int i = 0; i < strlen(word); i++){ printf("%c\n", word[i]); sleep(1); } printf("\n"); pthread_mutex_unlock(&print_mutex); } int main(){ pthread_t one, two; pthread_create(&one, 0, thread_one, 0); pthread_create(&two, 0, thread_two, 0); pthread_join(one, 0); pthread_join(two, 0); return 0; }