You are on page 1of 22

Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores

Darwin Leyva Velazquez

Generado por Doxygen 1.7.4


Martes, 16 de Octubre de 2012 21:27:36

ndice general I

Indice de archivos 1.1 Lista de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1 1 3

Documentacin de archivos 2.1

Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Hotel_la_discutida.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1 Documentacin de los denes . . . . . . . . . . . . . . . . . . 2.1.1.1 2.1.1.2 2.1.2 clientes . . . . . . . . . . . . . . . . . . . . . . . . . rebanadas . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 4 4 5 6 6 6 6 6 7 7 7 7

Documentacin de las funciones . . . . . . . . . . . . . . . . . 2.1.2.1 2.1.2.2 2.1.2.3 cliente . . . . . . . . . . . . . . . . . . . . . . . . . cocinero . . . . . . . . . . . . . . . . . . . . . . . . main . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.3

Documentacin de las variables . . . . . . . . . . . . . . . . . 2.1.3.1 2.1.3.2 2.1.3.3 2.1.3.4 2.1.3.5 2.1.3.6 2.1.3.7 clientes_atendidos . . . . . . . . . . . . . . . . . . . despertar_cocinero jamon mutex . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

necesito_ingrediente . . . . . . . . . . . . . . . . . . queso . . . . . . . . . . . . . . . . . . . . . . . . .

tostadas . . . . . . . . . . . . . . . . . . . . . . . .

2.2

Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Parking_el_auto_fantstico.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.1 Documentacin de los denes . . . . . . . . . . . . . . . . . . 2.2.1.1 2.2.1.2 autos . . . . . . . . . . . . . . . . . . . . . . . . . . cap_parking . . . . . . . . . . . . . . . . . . . . . . 8 8 9

II

NDICE GENERAL

2.2.2

Documentacin de las funciones . . . . . . . . . . . . . . . . . 2.2.2.1 2.2.2.2 2.2.2.3 2.2.2.4 2.2.2.5 bajar_autos . . . . . . . . . . . . . . . . . . . . . .

9 9 9

llegando_auto . . . . . . . . . . . . . . . . . . . . .

main . . . . . . . . . . . . . . . . . . . . . . . . . . 10 saliendo_auto . . . . . . . . . . . . . . . . . . . . . 10 subir_autos . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.3

Documentacin de las variables . . . . . . . . . . . . . . . . . 11 2.2.3.1 2.2.3.2 2.2.3.3 2.2.3.4 2.2.3.5 2.2.3.6 2.2.3.7 2.2.3.8 2.2.3.9 autos_en_parking . . . . . . . . . . . . . . . . . . . 11 bajar . . . . . . . . . . . . . . . . . . . . . . . . . . 11 conta_autos_bajar . . . . . . . . . . . . . . . . . . . 11 conta_autos_subir . . . . . . . . . . . . . . . . . . . 11 mutex . . . . . . . . . . . . . . . . . . . . . . . . . 11

para_bajar . . . . . . . . . . . . . . . . . . . . . . . 12 para_subir . . . . . . . . . . . . . . . . . . . . . . . 12 parking_no_lleno . . . . . . . . . . . . . . . . . . . . 12 parking_no_vacio . . . . . . . . . . . . . . . . . . . 12

2.2.3.10 subir . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Restaurante_el_Mesn.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3.1 Documentacin de los denes . . . . . . . . . . . . . . . . . . 13 2.3.1.1 2.3.2 clientes . . . . . . . . . . . . . . . . . . . . . . . . . 13

Documentacin de las funciones . . . . . . . . . . . . . . . . . 14 2.3.2.1 2.3.2.2 2.3.2.3 2.3.2.4 2.3.2.5 cajers . . . . . . . . . . . . . . . . . . . . . . . . . . 14 coci . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 empaqt . . . . . . . . . . . . . . . . . . . . . . . . . 14 main . . . . . . . . . . . . . . . . . . . . . . . . . . 15 recep . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.3.3

Documentacin de las variables . . . . . . . . . . . . . . . . . 15 2.3.3.1 2.3.3.2 2.3.3.3 2.3.3.4 2.3.3.5 2.3.3.6 cajeros . . . . . . . . . . . . . . . . . . . . . . . . . 15 cocineros . . . . . . . . . . . . . . . . . . . . . . . . 16 empaquetadores . . . . . . . . . . . . . . . . . . . . 16 mutex . . . . . . . . . . . . . . . . . . . . . . . . . 16

n_elementos_cobrar . . . . . . . . . . . . . . . . . . 16 n_elementos_cocina . . . . . . . . . . . . . . . . . . 16

Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

NDICE GENERAL

III

2.3.3.7

n_elementos_empaq . . . . . . . . . . . . . . . . . . 16

Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

Captulo 1

Indice de archivos
1.1. Lista de archivos

Lista de todos los archivos con descripciones breves: /home/darwin/Escritorio/SDC/Segundo Parcial/Hotel_la_discutida.c . . . . . . 3 /home/darwin/Escritorio/SDC/Segundo Parcial/Parking_el_auto_fantstico.c . 7 /home/darwin/Escritorio/SDC/Segundo Parcial/Restaurante_el_Mesn.c . . . 12

Indice de archivos

Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

Captulo 2

Documentacion de archivos
2.1. Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Hotel la discutida.c

#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <time.h>

denes
#dene clientes 100
Denimos la cantidad clientes.

#dene rebanadas 10
Denimos la cantidad de rebanadas que pondra el cocinero.

Funciones
void cocinero (void)
Cocinero: Siempre duerme, solo es despertado por el cliente.

void cliente (void)


Cada cliente solicita un numero de rebanadas de cada ingrediente.

int main ()
Se crean los hilos.

Documentacin de archivos

Variables
pthread_mutex_t mutex
El mutex con el cual controlaremos a cada proceso.

pthread_cond_t necesito_ingrediente
Se necesita algun ingrediente.

pthread_cond_t despertar_cocinero
Despertar al cocinero para poner los ingredientes que se terminaron.

int jamon = rebanadas


Rebanadas de jamon disponibles.

int queso = rebanadas


Rebanadas de queso disponibles.

int tostadas = rebanadas


Rebanadas de tostadas disponibles.

int clientes_atendidos = 0
Clientes servidos satisfactoriamente.

2.1.1.
2.1.1.1.

Documentacion de los denes


#dene clientes 100

Denimos la cantidad clientes. Denimos el numero de clientes con el cual vamos a trabajar. Denicin en la lnea 11 del archivo Hotel_la_discutida.c.

2.1.1.2.

#dene rebanadas 10

Denimos la cantidad de rebanadas que pondra el cocinero. Denimos el numero de rebanadas que pondra el cocinero cuando estas se hayan terminado. Denicin en la lnea 17 del archivo Hotel_la_discutida.c.

2.1.2.
2.1.2.1.

Documentacion de las funciones


void cliente ( void )

Cada cliente solicita un numero de rebanadas de cada ingrediente. El cliente en turno solicita un numero al azar menor o igual al numero de rebanadas que el cocinero pone en la mesa sin saber si estan disponibles, si estan disponibles las toma sin ninguna dicultad, pero de lo contrario toma solo las que hay, y despierta al cocinero para que ponga nuevamente el ingredientes y el cliente toma solo las que le faltaban para completar su porcion.
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

2.1 Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Hotel_la_discutida.c Bloqueamos al mutex. El cliente empiesa a pedir las rebanas que el quiere. Pide rebanadas de ingredientes. Vericamos que las que pidio esten disponibles. Si es as, las toma sin ninguna dicultad. Le decrementa al ingrediente las rebanadas que tomo. Si no estan disponibles todas las rebanadas que pidio. Solo toma las que hay. Ingrediente que pidio se va ha cero. Despertamos al cocinero para que reponga los ingredientes que hacen falta. Esperamos hasta que el cocinero nos avice que ya las repuso. Ya que nos aviso. Tomamos las que nos faltaban. Le decrementamos al ingrediente que pidio las que nos faltaban. Y asi lo hace con cada ingrediente. Ya que termino de tomar todos los ingredientes que pidio. Entonces incrementamos el numero de clientes atendidos. Liberamos el mutex.

Al na mandamos una seal al cocinero para que despierte y termine su hilo. Es necesario hacer esto por que el cocinero como siempre esta dormido y el no se entera cuando terminamos de atender a los clientes. Denicin en la lnea 112 del archivo Hotel_la_discutida.c.

2.1.2.2.

void cocinero ( void )

Cocinero: Siempre duerme, solo es despertado por el cliente. Siempre esta durmiendo aunque se inicie antes pero si los ingredientes no han sido terminados el sigue durmiendo, solo es despertado cuando un cliente le avisa que falta algun ingrediente y entonces este repone solo lo que ya ha sido vaciado. Vericamos si el numero de clientes atendidos todavia son menores al numero de clientes totales. Si todavia no hay clientes por atender. Bloqueamos el mutex Vericamos si ya se termino el jamon. Si ya se termino el jamon, entonces lo reponemos. Vericamos si ya se termino el queso. Si ya se termino el queso, entonces lo reponemos. Vericamos si ya se termino las tostadas.
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

Documentacin de archivos

Si ya se terminaron las tostadas, entonces las reponemos. Avisamos que ya se repusieron los ingredientes que estaban vacios. Duerme el cocinero hasta que nuevamente se termine algun ingrediente. Loberamos el mutex. Denicin en la lnea 63 del archivo Hotel_la_discutida.c.

2.1.2.3.

int main ( )

Se crean los hilos. Se declaran los hilos. Inicializamos el mutex. Inicializamos las variables de condicion. Creamos los hilos. Cachamos los hilos. Destruimos el mutex. Destruimos las variables de condicion. Denicin en la lnea 220 del archivo Hotel_la_discutida.c.

2.1.3.
2.1.3.1.

Documentacion de las variables


int clientes_atendidos = 0

Clientes servidos satisfactoriamente. Variable que lleva el control de los clientes que se han servido su porcion completa. Denicin en la lnea 56 del archivo Hotel_la_discutida.c.

2.1.3.2.

pthread cond t despertar_cocinero

Despertar al cocinero para poner los ingredientes que se terminaron. Variable de condicion para despertar al cocinero cuando a un cliente le hace falta de algun ingrediente. Denicin en la lnea 32 del archivo Hotel_la_discutida.c.

2.1.3.3.

int jamon = rebanadas

Rebanadas de jamon disponibles. Variable que lleva el control de las rebanadas de jamon que hay disponibles en la mesa. Denicin en la lnea 38 del archivo Hotel_la_discutida.c.
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

2.2 Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Parking_el_auto_fantstico.c 2.1.3.4. pthread mutex t mutex

El mutex con el cual controlaremos a cada proceso. Denicin en la lnea 20 del archivo Hotel_la_discutida.c.

2.1.3.5.

pthread cond t necesito_ingrediente

Se necesita algun ingrediente. Variable de condicion para avisar cuando el cliente necesita algun ingrediente. Denicin en la lnea 26 del archivo Hotel_la_discutida.c.

2.1.3.6.

int queso = rebanadas

Rebanadas de queso disponibles. Variable que lleva el control de las rebanadas de queso que hay disponibles en la mesa. Denicin en la lnea 44 del archivo Hotel_la_discutida.c.

2.1.3.7.

int tostadas = rebanadas

Rebanadas de tostadas disponibles. Variable que lleva el control de las rebanadas de tostadas que hay disponibles en la mesa. Denicin en la lnea 50 del archivo Hotel_la_discutida.c.

2.2.

Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo a Parcial/Parking el auto fant stico.c

#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <time.h>

denes
#dene cap_parking 10
Denimos la capacidad del parking.

#dene autos 30
Denimos la cantidad autos.
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

Documentacin de archivos

Funciones
void llegando_auto (void)
Llegan los autos.

void saliendo_auto (void)


Solicita entrega de autos.

void subir_autos (void)


Subir autos.

void bajar_autos (void)


Subir autos.

int main ()
Se crean los hilos.

Variables
pthread_mutex_t mutex
El mutex con el cual controlaremos a cada proceso.

pthread_cond_t para_subir
Autos por subir.

pthread_cond_t para_bajar
Autos por bajar.

pthread_cond_t parking_no_lleno
La variable de condicion para avisar cuando el parking no tiene lugares disponibles.

pthread_cond_t parking_no_vacio
La variable de condicion para avisar cuando el parking no esta lleno.

int autos_en_parking = 0
Variable que contabiliza cuantos autos hay en el parking.

int subir = 0
Variable que indica cuantos autos hay encolados para utilizar la rampa y ser subidos al parking.

int bajar = 0
Variable que indica cuantos autos hay encolados para utilizar la rampa y ser bajados al parking.

int conta_autos_subir = 0
Variable que cuenta los autos que voy subiendo.

int conta_autos_bajar = 0
Variable que cuenta los autos que voy bajando.

2.2.1.
2.2.1.1.

Documentacion de los denes


#dene autos 30

Denimos la cantidad autos. Denimos el numero de autos con el cual vamos a trabajar. Denicin en la lnea 17 del archivo Parking_el_auto_fantstico.c.
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

2.2 Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Parking_el_auto_fantstico.c 2.2.1.2. #dene cap parking 10

Denimos la capacidad del parking. Denimos el numero maximo que podra tener en su interior el parking. Denicin en la lnea 11 del archivo Parking_el_auto_fantstico.c.

2.2.2.
2.2.2.1.

Documentacion de las funciones


void bajar autos ( void )

Subir autos. Son bajados por la rampa los autos. Bloqueamos el mutex. Vericamos que hayan autos para ser bajados. Si no es as esperamos a que alguien solicite bajar su auto. Ahora, si hay autos para bajar, entonces los bajamos todos. Incrementamos los autos que he bajado y lo bajo. Vaciamos la cola que espera la rampa para bajar. Avisamos que el parkin no esta lleno y que por lo tanto hay lugares para recerbar. Liberamos el mutex. Denicin en la lnea 192 del archivo Parking_el_auto_fantstico.c.

2.2.2.2.

void llegando auto ( void )

Llegan los autos. Llegan los utos y se van encolando para luego ser subidos, siempre y cuando no este lleno el parking o los lugares esten reservados, esto quiere decir que puede que no se hayan subido todavia los autos. Bloqueamos el mutex. Vericamos que la capacidad de los autos encolados para subir no sea igual a la capacidad del parking. Si es as esperamos que algun auto sea bajado. Vericamos que los autos en el parking no sea igual a la capacidad del parking. Si es as esperamos que algun auto sea bajado. Vericamos que no haya autos encolados para bajar. Si es as esperamos que sean bajados. Ya que no hay ningun inconveniente, entonces reservamos el lugar para el auto.
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

10

Documentacin de archivos

Incrementamos los autos en el parking. Avisamos a la rampa que hay un auto mas para subir. Liberamos el mutex. Denicin en la lnea 53 del archivo Parking_el_auto_fantstico.c.

2.2.2.3.

int main ( )

Se crean los hilos. Se declaran los hilos. Inicializamos el mutex. Inicializamos las variables de condicion. Creamos los hilos. Cachamos los hilos. Destruimos el mutex. Destruimos las variables de condicion. Denicin en la lnea 231 del archivo Parking_el_auto_fantstico.c.

2.2.2.4.

void saliendo auto ( void )

Solicita entrega de autos. Se solicitan los autos y se van encolando para luego ser bajados, siempre y cuando el parking contenga autos o no hayan autos esperando subir. Bloqueamos el mutex. Vericamos que los autos en el parking no sea igual a cero. Si es as entonces esperamos que algun auto sea subido. Vericamos que no haya autos esperando subir. Si es as esperamos que sean subidos. Ya que no hay ningun inconveniente entonces encolamos el auto para ser bajado. Decrementamos la cantidad de autos en eRestaurante el Mesn donde su hambre es saciada!l parking. Avisamos a la rampa que hay un auto mas para ser bajado Liberamos el muex. Denicin en la lnea 107 del archivo Parking_el_auto_fantstico.c.

2.2.2.5.

void subir autos ( void )

Subir autos.
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

2.2 Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Parking_el_auto_fantstico.c Son subidos por la rampa los autos. Bloqueamos el mutex. Vericamos que hayan autos para subir. Si no es as esperamos a que alguien reserve un lugar. Ahora, si hay autos para subir, entonces los subimos todos. Incrementamos los autos que he subido y lo subo. Vaciamos la cola que espera la rampa para subir. Avisamos que el parkin tiene autos. Liberamos el mutex. Denicin en la lnea 151 del archivo Parking_el_auto_fantstico.c.

11

2.2.3.
2.2.3.1.

Documentacion de las variables


int autos_en_parking = 0

Variable que contabiliza cuantos autos hay en el parking. Denicin en la lnea 38 del archivo Parking_el_auto_fantstico.c.

2.2.3.2.

int bajar = 0

Variable que indica cuantos autos hay encolados para utilizar la rampa y ser bajados al parking. Denicin en la lnea 42 del archivo Parking_el_auto_fantstico.c.

2.2.3.3.

int conta_autos_bajar = 0

Variable que cuenta los autos que voy bajando. Denicin en la lnea 46 del archivo Parking_el_auto_fantstico.c.

2.2.3.4.

int conta_autos_subir = 0

Variable que cuenta los autos que voy subiendo. Denicin en la lnea 44 del archivo Parking_el_auto_fantstico.c.

2.2.3.5.

pthread mutex t mutex

El mutex con el cual controlaremos a cada proceso. Denicin en la lnea 20 del archivo Parking_el_auto_fantstico.c.
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

12

Documentacin de archivos

2.2.3.6.

pthread cond t para_bajar

Autos por bajar. La variable de condicion para contar los autos que tengo por bajar. Denicin en la lnea 32 del archivo Parking_el_auto_fantstico.c.

2.2.3.7.

pthread cond t para_subir

Autos por subir. La variable de condicion para contar los autos que tengo por subir. Denicin en la lnea 26 del archivo Parking_el_auto_fantstico.c.

2.2.3.8.

pthread cond t parking_no_lleno

La variable de condicion para avisar cuando el parking no tiene lugares disponibles. Denicin en la lnea 34 del archivo Parking_el_auto_fantstico.c.

2.2.3.9.

pthread cond t parking_no_vacio

La variable de condicion para avisar cuando el parking no esta lleno. Denicin en la lnea 36 del archivo Parking_el_auto_fantstico.c.

2.2.3.10.

int subir = 0

Variable que indica cuantos autos hay encolados para utilizar la rampa y ser subidos al parking. Denicin en la lnea 40 del archivo Parking_el_auto_fantstico.c.

2.3.

Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Restaurante el Meson.c

#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <time.h>
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

2.3 Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Restaurante_el_Mesn.c

13

denes
#dene clientes 10
Denimos la cantidad clientes.

Funciones
void recep (void)
Recibe a los clientes.

void coci (void)


Se cocinan los pedidos de los clientes.

void empaqt (void)


Se empaquetan los pedidos de los clientes.

void cajers (void)


Se cobran y entrgan los pedidos.

int main ()
Se crean los hilos.

Variables
pthread_mutex_t mutex
El mutex con el cual controlaremos a cada empleado.

pthread_cond_t cocineros
La variable de condicion para controlar al cocinero.

pthread_cond_t empaquetadores
La variable de condicion para controlar al empaquetador.

pthread_cond_t cajeros
La variable de condicion para controlar al cajero.

int n_elementos_cocina = 0
Nos indica cuantos pedidos hay que cocinar.

int n_elementos_empaq = 0
Nos indica cuantos pedidos hay que empaquetar.

int n_elementos_cobrar = 0
Nos indica cuantos pedidos hay que cobrar.

2.3.1.
2.3.1.1.

Documentacion de los denes


#dene clientes 10

Denimos la cantidad clientes. Denimos el numero de clientes con el cual vamos a trabajar. Denicin en la lnea 11 del archivo Restaurante_el_Mesn.c.
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

14

Documentacin de archivos

2.3.2.
2.3.2.1.

Documentacion de las funciones


void cajers ( void )

Se cobran y entrgan los pedidos. Se cobran los pedidos cuando el empaquetador avisa que hay paqietes listos para cobrar y entregar. Bloquemaos el mutex. Vericamos que hay algun pedidos que cobrar. Si no hay, esperamos ha que el empaquetador nos avice. Ya que nos aviso, entonces lo cobramos y etregamos. Decrementamos los pedidos que hay para cobrar. Liberamos el mutex. Denicin en la lnea 136 del archivo Restaurante_el_Mesn.c.

2.3.2.2.

void coci ( void )

Se cocinan los pedidos de los clientes. Se preparan los pedidos cuando el recepcionista avisa. Bloqueamos el mutex. Vericamos que hay algun pedido que cocinar. Si no hay, esperamos ha que el recepcionista nos avice. Ya que nos aviso, entonces lo preparamos. Decrementamos los pedidos que hay para cocinar. Incrementamos los pedidos que tiene el empaquetador. Avisamos al empaquetador que tiene pedidos. Liberamos el mutex. Denicin en la lnea 65 del archivo Restaurante_el_Mesn.c.

2.3.2.3.

void empaqt ( void )

Se empaquetan los pedidos de los clientes. Se empaquetan los pedidos cuando el cocinero avisa. Bloquemaos el mutex. Vericamos que hay algun pedido que empaquetar. Si no hay, esperamos ha que el cocinero nos avice. Ya que nos aviso, entonces lo empaquetamos.
Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

2.3 Referencia del Archivo /home/darwin/Escritorio/SDC/Segundo Parcial/Restaurante_el_Mesn.c Decrementamos los pedidos que hay para empaquetar. Incrementamos los pedidos que tiene el cajero. Avisamos al cajero que tiene pedidos para cobrar. Liberamos el mutex. Denicin en la lnea 100 del archivo Restaurante_el_Mesn.c.

15

2.3.2.4.

int main ( )

Se crean los hilos. Se declaran los hilos. Inicializamos el mutex. Inicializamos las variables de condicion. Creamos los hilos. Cachamos los hilos. Destruimos el mutex. Destruimos las variables de condicion. Denicin en la lnea 169 del archivo Restaurante_el_Mesn.c.

2.3.2.5.

void recep ( void )

Recibe a los clientes. Se reciben alos clientes y se incrementa el numero de pedidos que se tienen que elaborar en la cocina y se le manda una seal para que sepa que tiene pedidos que cocinar. Bloqueamos el mutex y recibimos al cliente Incrementamos el numero de pedidos que tiene la cocina. Avisamos a los cocineros de que ya tienen pedido. Liberamos el mutex. Denicin en la lnea 41 del archivo Restaurante_el_Mesn.c.

2.3.3.
2.3.3.1.

Documentacion de las variables


pthread cond t cajeros

La variable de condicion para controlar al cajero. Denicin en la lnea 23 del archivo Restaurante_el_Mesn.c.

Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

16

Documentacin de archivos

2.3.3.2.

pthread cond t cocineros

La variable de condicion para controlar al cocinero. Denicin en la lnea 17 del archivo Restaurante_el_Mesn.c.

2.3.3.3.

pthread cond t empaquetadores

La variable de condicion para controlar al empaquetador. Denicin en la lnea 20 del archivo Restaurante_el_Mesn.c.

2.3.3.4.

pthread mutex t mutex

El mutex con el cual controlaremos a cada empleado. Denicin en la lnea 14 del archivo Restaurante_el_Mesn.c.

2.3.3.5.

int n_elementos_cobrar = 0

Nos indica cuantos pedidos hay que cobrar. Denicin en la lnea 32 del archivo Restaurante_el_Mesn.c.

2.3.3.6.

int n_elementos_cocina = 0

Nos indica cuantos pedidos hay que cocinar. Denicin en la lnea 26 del archivo Restaurante_el_Mesn.c.

2.3.3.7.

int n_elementos_empaq = 0

Nos indica cuantos pedidos hay que empaquetar. Denicin en la lnea 29 del archivo Restaurante_el_Mesn.c.

Generado el Martes, 16 de Octubre de 2012 21:27:36 para Ejercicio a Resolver Mediante Semaforo (Mutex) y Monitores por Doxygen

You might also like