Semaforos pascalFc introduccion a la concurrencia
siento no poder ayudarte con tu programa pero aunque tiene mucha similitud con pascal no tiene las mismas unidades y mi conocimiento es poco de el te pongo este ejemplo para ver si te puede ayudar algo en tu trabajo lo siento suerte.
program semafo;
var
count: integer;
mutex: semaphore;
process turnstile1;
var
loop: integer;
begin
for loop := 1 to 20 do
begin
wait(mutex);
count := count + 1;
signal(mutex)
end
end;
process turnstile2;
var
loop: integer;
begin
for loop := 1 to 20 do
begin
wait(mutex);
count := count + 1;
signal(mutex)
end
end;
begin
count := 0;
initial(mutex,1);
cobegin
turnstile1;
turnstile2
coend;
writeln(’Total admitted: ’,count)
end.