Está en la página 1de 7

UNIVERSIDAD NACIONAL JORGE BASADRE

GROHMANN
FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMÁTICA Y
SISTEMAS

LABORATORIO N°12

ASIGNATURA: ALGORITMOS Y PROGRAMACIÓN PARALELA

DOCENTE: ING. DRA. ANA CORI MORÓN

ESTUDIANTE:

DIANA ALEXANDRA POMA CONDORI 2015-119059

CICLO: TERCERO | TURNO: TARDE


En pascal

1BARBERO Y 3 CLIENTES
program Barbero;
const
nsillas = 5;
var
silla,nuevoCliente,barbero:semaphore;
esperar,clientes: integer;
process type customer (clientes:integer);
begin
repeat
wait(silla);
if esperar < nsillas then
begin
esperar := esperar +1;
writeln('esperando:',clientes);
sleep(random(1));
signal(nuevoCliente);
signal(silla);
wait(barbero);
end;
forever
end;
process Barber;
begin
repeat
repeat
begin
wait (nuevoCliente);
wait(silla);
esperar:= esperar-1;
signal(barbero);
signal(silla);
writeln('Barbero corta el pelo ');
end;
until (esperar=0);
forever
end;

var
clientela:array [1..3] of customer;

begin
esperar := 0;
initial(nuevoCliente,0);
initial(barbero, 0);
initial(silla,1);
cobegin
Barber;
clientela[1](1);
clientela[2](2);
clientela[3](3);
coend
end.
PROGRAM,A EN EJECUCION
esperando:2
esperando:1
Barbero corta el pelo
esperando:3
Barbero corta el pelo
esperando:1
Barbero corta el pelo
esperando:2
Barbero corta el pelo
esperando:3
Barbero corta el pelo
esperando:1
Barbero corta el pelo
esperando:2
Barbero corta el pelo
esperando:3
esperando:1
Barbero corta el pelo
Barbero corta el pelo
Barbero corta el pelo
esperando:1
esperando:3
Barbero corta el pelo
esperando:2
Barbero corta el pelo
esperando:1
Barbero corta el pelo
esperando:1
Barbero corta el pelo
esperando:1
Barbero corta el pelo
esperando:2
Barbero corta el pelo
esperando:1
Barbero corta el pelo
esperando:2
Barbero corta el pelo
2 BARBEROS Y 3 CLIENTES
program Barbero;
const
nsillas = 5;
var
silla,nuevoCliente,barbero:semaphore;
esperar,clientes: integer;
process type customer (clientes:integer);
begin
repeat
wait(silla);
if esperar < nsillas then
begin
esperar := esperar +1;
writeln('esperando:',clientes);
sleep(random(1));
signal(nuevoCliente);
signal(silla);
wait(barbero);
end;
forever
end;
process type Barber(orden:integer);
begin
repeat
repeat
begin
wait (nuevoCliente);
wait(silla);
esperar:= esperar-1;
signal(barbero);
signal(silla);
writeln('Barbero corta el pelo ',orden);
end;
until (esperar=0);
forever
end;

var
clientela:array [1..3] of customer;
peluquero:array [1..2] of Barber;

begin
esperar := 0;
initial(nuevoCliente,0);
initial(barbero, 0);
initial(silla,1);
cobegin
peluquero[1](1);
peluquero[2](2);
clientela[1](1);
clientela[2](2);
clientela[3](3);
coend
end.
PROGRAMA EN EJECUCION
esperando:2
esperando:1
Barbero corta el pelo 1
esperando:3
Barbero corta el pelo 2
Barbero corta el pelo 1
esperando:1
esperando:2
esperando:3
Barbero corta el pelo 1
Barbero corta el pelo 2
Barbero corta el pelo 1
esperando:2
esperando:1
esperando:3
Barbero corta el pelo 1
Barbero corta el pelo 2
esperando:1
Barbero corta el pelo 1
esperando:2
Barbero corta el pelo 1
esperando:1
Barbero corta el pelo 2
esperando:3
Barbero corta el pelo 1
esperando:2
Barbero corta el pelo 1
Barbero corta el pelo 2
esperando:1
Barbero corta el pelo 1
esperando:1
esperando:2
Barbero corta el pelo 1
Barbero corta el pelo 2
esperando:1
esperando:2
Barbero corta el pelo 1
esperando:3
esperando:1
Barbero corta el pelo 1
Barbero corta el pelo 2
Barbero corta el pelo 1
esperando:1
esperando:2
esperando:3
Barbero corta el pelo 1
Barbero corta el pelo 2
Barbero corta el pelo 1
esperando:3
esperando:1
Barbero corta el pelo 1
CODEBLOKS

1BARBERO Y 3 CLIENTES
#include <iostream>
#include <semaphore.h>
#include <time.h>
#include <thread>
using namespace std;
const int Nsillas = 5;
sem_t silla;
sem_t nuevoCliente;
sem_t barbero;
int esperar;
void Barber(){
while(true){
do{
sem_wait(&nuevoCliente);
sem_wait(&silla);
esperar=esperar-1;
sem_post(&barbero);
sem_post(&silla);
cout<<"Elpeluquero corta el pelo del cliente"<<endl;
}while(esperar!=0);
}
}
void Customer(int numero){
while(true)
{
sem_wait(&silla);
if(esperar<Nsillas)
{
esperar=esperar+1;
cout<<"Esperando :"<<numero<<endl;
sem_post(&nuevoCliente);
sem_post(&silla);
sem_wait(&barbero);
}
else
{
sem_post(&silla);
}
}
}
int main(){
int esperar=0;
thread clientela[3];
thread Peluquero;
sem_init(&nuevoCliente,0,0);
sem_init(&barbero,0,0);
sem_init(&silla,0,1);

Peluquero = thread(Barber);
for(int i = 0; i<3;i++){
clientela[i] = thread(Customer,i+1);
}
Peluquero.join();
for(int i=0; i<3;i++){
clientela[i].join();
}
return 0;
}
PROGRAMA EN EJECUCION

2 BARBEROS Y 3 CLIENTES

También podría gustarte