#include #include #include "fila.h" #include "fila.c" #include "dados.h" #include "dados.c" #include "empilha.c" void produtor(int p); void consumidor(void); void down(int s); int up(int s); void insere_item(int p); void remove_item(void); int cheio=0,vazio=3,mutex=1; int main(void){ tipoFila fila; tipoDados x; char op; int aprod; while(1) { //clsMenu(); printf("\nP para produzir, C para consumir, M para mostrar estado\n"); scanf("%c", &op); switch(op) { case 'p': printf("\nDigite o valor a produzir\n"); scanf("%d", &aprod); produtor(aprod); // cls(); break; case 'c': printf("\nTentando consumir...\n"); consumidor(); // cls(); break; case 'm': exibe(); break; /*case 'f': imprimefila();*/ default: printf("nao tem essa opcao"); } } } /*// envia e lista os dados da fila inicializa(&fila); printf("Introduza uma sequencia de caracteres:\n"); while(!leDados(&x)){ adiciona(&fila,x); } printf("Sequencia lida:\n"); while(!filaVazia(&fila)){ retira(&fila,&x); escreveDados(x); } printf("\n"); exit(0); } */ void produtor(int p) { down(vazio); down(mutex); if(vazio != 0) { insere(p); exibe(); } else { //insere na fila } up(mutex); cheio = up(cheio); } void consumidor(void) { down(cheio); down(mutex); if(cheio != 0) { remove_item(); } else { //coloca na fila } up(mutex); up(vazio); } } void down(int s) { if(s > 0) { s=s-1; } else{ //sleep(); printf("dorme"); s=0; } } int up(int s) { s=s+1; return s; } void insere_item(int p) { } void remove_item(void) { remover(); }