Trabalho produtor consumidor

Disponível somente no TrabalhosFeitos
  • Páginas : 3 (708 palavras )
  • Download(s) : 0
  • Publicado : 4 de novembro de 2012
Ler documento completo
Amostra do texto
O produtor e o consumidor é um algoritmo que faz-se por
em pratica a gerencia de processos concorrentes.
O problema é quando enquanto um processo produz
escrevendo em um buffer limitado, equantoo
outro consome limpando o buffer, preservando
a integridade dos dados.

Neste algoritmo é definido o buffer para 8 posições
sendo a sua limitação. São definidas variaveis
para que oalgoritmo saiba quando ele esta dormindo,
acordado, quando o processo de consumir estiver acabado
e quando ele estiver processando.
Há uma estrutura que define um apontador, para que
aponte uma novaposição de leitura ou escrita,
e que ainda mantem a ordem na fila.

#include
#include
#include
#include
#include
#include
#include
#include
#include

#define MAXBUFF 8 /*Maximo debuffer livre*/
#define DORMINDO 0
#define ACORDADO 1
#define ACABADO 0
#define PROCESSANDO 1

typedef struct apontador{/* Estrutura que aponta para nova posiçao de leitura ou escrita.. e mantema ordem em uma fila*/
int livre;/*Posiçao do buffer*/
struct apontador *prox;/*proxima posiçao do buffer*/
}APONTA;

APONTA *fila_leitura_inicio = NULL, *fila_leitura_fim = NULL;/*Fila quecontrola buffer livre de leitura*/
APONTA *fila_escrita_inicio = NULL, *fila_escrita_fim = NULL;/*Fila que controla buffer livre de escrita*/

void *Consumir(void* texto);
void *produz(void*texto);
int setFila(int posicao, APONTA **begin, APONTA **end);
int getFila(APONTA **begin, APONTA **end);

char bufferLimitado[MAXBUFF]; /*Buffer de trabalho*/
int buff_empty = MAXBUFF; /*Bufferlivre*/
int buff_full = 0; /*Buffer ocupado*/
int status_produz = ACORDADO;
int status_consome = ACORDADO;/* Se estÃo dormindo ou acordados*/
int status_processamento = PROCESSANDO;

pthread_mutex_tmutex = PTHREAD_MUTEX_INITIALIZER; /* Mutex que controla o acesso ao buffer*/
pthread_mutex_t mutex_status_buff = PTHREAD_MUTEX_INITIALIZER; /*Mutex que controla a espera(dormir/acordar)*/...
tracking img