Основные задачи параллельного программирования. Конспект лекций. Степанов Б.М. - 17 стр.

UptoLike

Составители: 

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