Составители:
Рубрика:
Эти механизмы эквивалентны в том смысле, что программа,
написанная с помощью одного из них, может быть переписана в
программу, использующую другой механизм; однако, использова-
ние различных механизмов в различных обстоятельствах ведет к
различной эффективности программной реализации алгоритма.
Замечание. В дальнейшем применяется программная нотация,
которая достаточна для описания примеров программ; она пред-
ставляется достаточно ясной и не требующей формализации.
§ 2. Асинхронная передача сообщений
Для асинхронной передачи сообщений канал является очередью
FIFO (First In – First Out); при этом сообщения могут быть отп рав-
лены, но еще не получены.
Объявление канала имеет вид
chan ch(type
1
id
1
, . . . , type
n
id
n
); (1)
Здесь ch — имя канала, type
i
— тип поля (обязателен), id
i
—
имя поля (не является обязательным).
Пример 1.
chan input(char);
chan disk_access(int cylinder, int block, int count,
char*buffer);
Здесь объявлены два канала. Первый канал input исполь-
зуется для передачи односимвольных сообщений. Второй канал
disk_access содержит сообщения с четырьмя полями: номер ци-
линдра, номер блока, число символов, адрес буфера.
Можно использовать массив каналов:
chan result[n](int);
здесь индексы (номера каналов) имеют значения от 0 до n-1.
Отправка сообщения по каналу ch (см. (1)) имеет вид
send ch(expr
1
, . . . , expr
n
); (2)
здесь выражение expr
i
должно иметь тип type
i
.
Выполнение операции send состоит в
1) в вычислении выражений expr
i
;
8
Страницы
- « первая
- ‹ предыдущая
- …
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »