/* primo esempio di utilizzo dei semafori nei thread: stampa concorrente */ #include #include #include sem_t mysem; void *body(void *arg) { int i,j; for (j=0; j<40; j++) { sem_wait(&mysem); for (i=0; i<1000000; i++); fprintf(stderr,(char *)arg); sem_post(&mysem); } return NULL; } int main() { pthread_t t1,t2,t3; pthread_attr_t myattr; int err; sem_init(&mysem,0,1); err = pthread_create(&t1, NULL, body, (void *)"."); err = pthread_create(&t2, NULL, body, (void *)"#"); err = pthread_create(&t3, NULL, body, (void *)"o"); pthread_join(t1, NULL); pthread_join(t2, NULL); pthread_join(t3, NULL); printf("\n"); return 0; }