#include #include void incrementa_vetor(); void decrementa_vetor(); int buffer1[5]; int ent1 = 0; int sai1 = 0; int dado = 100; pthread_mutex_t incrementar = PTHREAD_MUTEX_INITIALIZER; main(){ pthread_t t1, t2, t3, t4; pthread_create(&t1, NULL, (void *) incrementa_vetor, NULL); pthread_create(&t2, NULL, (void *) incrementa_vetor, NULL); pthread_create(&t3, NULL, (void *) decrementa_vetor, NULL); pthread_create(&t4, NULL, (void *) decrementa_vetor, NULL); pthread_join(t1, NULL); pthread_join(t2, NULL); pthread_join(t3, NULL); pthread_join(t4, NULL); } void incrementa_vetor(){ while(1){ sleep(1); pthread_mutex_lock(&incrementar); buffer1[ent1] = dado++; printf("No incrementa_vetor - buffer1: %d\n", buffer1[ent1]); getchar(); ent1 = (ent1 + 1) % 5; pthread_mutex_unlock(&incrementar); } } void decrementa_vetor(){ int local; while(1){ pthread_mutex_lock(&incrementar); local = buffer1[sai1]; printf("No decrementa_vetor - buffer1: %d\n", buffer1[sai1]); getchar(); sai1 = (sai1 + 1) % 5; pthread_mutex_unlock(&incrementar); sleep(1); } }