Esempio n. 1
0
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;
}
Esempio n. 2
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;
}