PRODUCTORES-CONSUMIDORES
A continuación se presenta el código de las funciones principales en el algoritmo de PRODUCTORES-CONSUMIDORES, en el lenguaje de programación C++.
#define N 100 /*Establecer tamaño del buffer*/
typedef int semaforo; /*int especiales semáforo*/
semaforo mutex = 1; /*acceso o salida región crítica*/
semaforo vacias = N; /*cuenta espacios vacios del buffer*/
semaforo llenas = 0; /*cuenta espacios ocupados del buffer*/
void productor(void)
{
int elem;
while (TRUE)
{
elem = producir_elem(); /*generar elemento para poner en búffer*/
down(&vacias); /*decrementar cuenta de vacias*/
down(&mutex); /*entrar en región crítica*/
insetar_elem(elem); /*inserta un elemento en el búffer*/
up(&mutex); /*salir región crítica*/
up(&llenas); /*incrementar espacios ocupados*/
}
}
void consumidor(void)
{
int elem;
while (TRUE)
{
down(&llenas); /*decrementar espacios ocupados*/
down(&mutex); /*entrar en región crítica*/
elem = sacar_elem(); /*sacar elemento del búffer*/
up(&mutex); /*salir región crítica*/
up(&vacias); /*incrementar cuenta espacios vacios*/
consumir_elem(elem); /*consumir el elemento*/
}
}
Integrantes :
- Alex Gonzaga
- César Montalván