Sei sulla pagina 1di 3

Los fumadores de cigarrillos

El problema de los fumadores de cigarrillos es otro problema clsi-co de


sincronizacin. Bsicamente, es un problema de coordinacinentre un agente y
tres fumadores en el que intervienen tres ingredien-tes: i) papel, ii) tabaco y iii)
fsforos. Por una parte, el agente disponede una cantidad ilimitada respecto a
los tres ingredientes. Por otraparte, cada fumador dispone de un nico
elemento, tambin en canti-dad ilimitada, es decir, un fumador dispone de
papel, otro de tabaco yotro de fsforos.
Cada cierto tiempo, el agente coloca sobre una mesa, de maneraaleatoria, dos
de los tres ingredientes necesarios para liarse un ciga-rrillo (ver gura 3.11). El
fumador que tiene el ingrediente restantecoge los otros dos de la mesa, se lia
el cigarrillo y se lo notica alagente. Este ciclo se repite indenidamente.La
problemtica principal reside en coordinar adecuadamente alagente y a los
fumadores, considerando las siguientes acciones:
1. El agente pone dos elementos sobre la mesa.
2. El agente notica al fumador que tiene el tercer elemento que yapuede
liarse un cigarrillo (se simula el acceso del fumador a lamesa).
3. El agente espera a que el fumador le notique que ya ha termi-nado de
liarse el cigarrillo.
4. El fumador notica que ya ha terminado de liarse el cigarrillo.
5. El agente vuelve a poner dos nuevos elementos sobre la
mesa,repitindose as el ciclo.

Figura 3.11: Esquema grco del problema de los fumadores de


cigarrillos.
Este problema se puede resolver utilizando dos posibles esquemas:

Recuperacin selectiva utilizando un nico buzn (ver gura3.13). En


este caso, es necesario integrar en el contenido del men-saje de
algn modo el tipo asociado al mismo con el objetivo deque lo
recupere el proceso adecuado. Este tipo podra ser A, T, Po F en
funcin del destinatario del mensaje.

Recuperacin no selectiva utilizando mltiples buzones (ver -gura


3.14). En este caso, es necesario emplear tres buzones paraque el
agente pueda comunicarse con los tres tipos de agentesy,
adicionalmente, otro buzn para que los fumadores puedanindicarle
al agente que ya terminaron de liarse un cigarrillo

Este ltimo caso de recuperacin no selectiva est estrechamen-te


ligado al planteamiento de las colas de mensajes POSIX, donde noexiste
un soporte explcito para llevar a cabo una recuperacin se-lectiva. En la
gura 3.12 se muestra el pseudocdigo de una posiblesolucin
atendiendo a este segundo esquema.

Figura 3.12: Solucin en pseudocdigo al problema de los fumadores de


cigarrillosusando paso de mensajes
Como se puede apreciar en la misma, el agente notica al fumadorque
completa los tres ingredientes necesarios para fumar a travs deun
buzn especco, asociado a cada tipo de fumador. Posteriormente,el
agente se queda bloqueado (mediante receive sobre
buzon_agente)hasta que el fumador notique que ya ha terminado de
liarse el ci-garrillo. En esencia, la sincronizacin entre el agente y el
fumador serealiza utilizando el patrn rendezvous. (Vallejo Fernndez,
Gonzales Morcill, & Albusac Jimnez, 2012)

Potrebbero piacerti anche