#include #include #include #include pthread_mutex_t print_mutex = PTHREAD_MUTEX_INITIALIZER; void* something(void *mv){ usleep(random() % 100000); // Exclusive use of the code from here while(pthread_mutex_trylock(&print_mutex)) usleep(1); // Wait nicely for(char *cc = mv; *cc; cc++){ usleep(1); printf("%c", *cc); } puts(""); pthread_mutex_unlock(&print_mutex); // To here } int main(){ pthread_t t1, t2; srandom((long unsigned int)&t1); // pthread_create(&t1, 0, something, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); // pthread_create(&t2, 0, something, "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"); pthread_create(&t1, 0, something, "Giraffes are my favorite animal"); pthread_create(&t2, 0, something, "I don't like giraffes, because they are too tall"); pthread_join(t1, 0); pthread_join(t2, 0); return 0; }