int main(int argc,char *argv[]){ omp_init_lock(&CP); omp_init_lock(&CC); omp_set_lock(&CC); int idA=omp_get_thread_num(); int idb=omp_get_thread_num(); #pragma omp parallel sections shared(x) { #pragma omp section productor(); #pragma omp section consumidor(); } return 0; }
int main(void) { int processos = 2, id = 0, i = 0; /* Cria area compartilhada na memoria e inicializa semaforos */ Shared *shm = mmap(NULL, sizeof(Shared), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); sem_init(&shm->p_sem, 1, 1); sem_init(&shm->c_sem, 1, 0); shm->termina = 0; /* O buffer compartilhado é uma pilha de 256 posições, ver pilha.h criada com o Alessandro */ initPilha(&shm->pilha); /* Seed do gerador de numeros randomicos */ srand(time(NULL)); /* Cria filhos consumidores */ for(i = 0; i < processos; i++) { id = fork(); if(id < 0) { perror("Erro!\n"); exit(1); } else if(id == 0) { consumidor(shm); exit(0); } } /* Processo pai é o produtor */ produtor(shm); /* Aguarda que os filhos terminem a execução */ for(i = 0; i < processos; ++i) { wait(NULL); } printf("FIM\n"); return 1; }