ВУЗ:
Составители:
17
.
..
End;
Процесс 2 : begin
.
.
Освободить (S);
End;
coend;
end;
Допустим, что процесс 3 должен начать выполняться после того, как закончатся про-
цессы 1 и 2.
Var
S1, S2: семафор двоичный;
begin
S1:=0;
S2:=0;
{Оба семафора сначала закрыты}
cobegin
Процесс 1: begin . . . Освободить (S1); End
Процесс 2: begin . . . Освободить (S2); End
Процесс 3: begin . . . Установить (S1); Установить (S2); . . . End
coend;
end;
{только тогда, когда S1, S2 будут открыты, процесс 3 начнёт выполняться}
3) Допустим, что процесс 3 необходимо запустить после окончания одного из процес-
сов – первого или второго.
Var
S: семафор двоичный;
Begin
S:=0;
Cobegin
Процесс 1 : begin . . . Освободить (S); end;
Процесс 2 : begin . . . Освободить (S); end;
Процесс 3 : begin . . . Установить (S); . . . end;
Coend;
End;
Синхронизация процессов с использованием сигналов или событий.
С каждым сигналом в системе связывается очередь процессов, ожидающих сигнал.
Если процесс выполняет команду “ждать сигнал” и (Е) = 0 , то процесс помещается в очередь
ожидания сигналов. Если выполняется команда “передать сигнал”, то очередь просматрива-
ется и ожидающий сигнал процесс переводится в готовое состояние.
Var
E: сигнал;
Для переменной Е типа сигнал определим две операции:
Передать сигнал (Е) и Ждать сигнал (Е).
. .. End; Процесс 2 : begin . . Освободить (S); End; coend; end; Допустим, что процесс 3 должен начать выполняться после того, как закончатся про- цессы 1 и 2. Var S1, S2: семафор двоичный; begin S1:=0; S2:=0; {Оба семафора сначала закрыты} cobegin Процесс 1: begin . . . Освободить (S1); End Процесс 2: begin . . . Освободить (S2); End Процесс 3: begin . . . Установить (S1); Установить (S2); . . . End coend; end; {только тогда, когда S1, S2 будут открыты, процесс 3 начнёт выполняться} 3) Допустим, что процесс 3 необходимо запустить после окончания одного из процес- сов – первого или второго. Var S: семафор двоичный; Begin S:=0; Cobegin Процесс 1 : begin . . . Освободить (S); end; Процесс 2 : begin . . . Освободить (S); end; Процесс 3 : begin . . . Установить (S); . . . end; Coend; End; Синхронизация процессов с использованием сигналов или событий. С каждым сигналом в системе связывается очередь процессов, ожидающих сигнал. Если процесс выполняет команду “ждать сигнал” и (Е) = 0 , то процесс помещается в очередь ожидания сигналов. Если выполняется команда “передать сигнал”, то очередь просматрива- ется и ожидающий сигнал процесс переводится в готовое состояние. Var E: сигнал; Для переменной Е типа сигнал определим две операции: Передать сигнал (Е) и Ждать сигнал (Е). 17