Hyman y Eisenberg
Hyman y Eisenberg
Hyman y Eisenberg
FACULTAD DE INGENIERÍA
TACNA - PERÚ
2022
Algoritmo Hyman en Pascal:
Ejecución:
Código fuente:
program hyman;
PROCESS P0;
BEGIN
REPEAT
flag1:=true;
WHILE turno<>1 do
BEGIN
WHILE flag2=true do NULL;
turno:=1;
END;
suma:=suma+1;
WriteLn('Turno1 - ',suma);
flag1:=false;
FOREVER
END;
PROCESS P1;
BEGIN
REPEAT
flag2:=true;
WHILE turno<>2 do
BEGIN
WHILE flag1=true do NULL;
turno:=2;
END;
suma:=suma+1;
WriteLn('Turno2 - ',suma);
flag2:=false;
FOREVER
END;
Ejecución:
Código fuente:
#include <iostream>
#include <thread>
using namespace std;
bool flag1,flag2;
int suma,turno;
void P0(){
while(true){
flag1=true;
while(turno!=1){
while(flag2==true){
}
turno=1;
}
suma=suma+1;
cout<<"\nTurno 1 - : "<<suma;
flag1=false;
}
}
void P1(){
while(true){
flag2=true;
while(turno!=2){
while(flag1==true){
}
turno=2;
}
suma=suma+1;
cout<<"\nTurno 2 - : "<<suma;
flag2=false;
}
}
int main(){
flag1=false;
flag2=false;
turno=1;
suma=0;
thread t1(P0);
thread t2(P1);
t1.join();
t2.join();
return 0;
}
Algoritmo Eisenberg en Pascal:
Ejecución:
Código fuente:
program eisenberg;
const n = 3;
var turno, suma,aux : integer;
var indicador: array[0..n] of integer;
begin
for aux := 0 to n do indicador[aux]:=3;
turno := random(n);
suma:=0;
COBEGIN
int main(){
int i;
for(i=0;i<n;i++){
indicador[i]=3;
}
turno=0;
suma=0;
thread t1(Pi,0);
thread t2(Pi,1);
thread t3(Pi,2);
t1.join();
t2.join();
t3.join();
return 0;
}