Технология программирования для распределенных параллельных систем. Демьянович Ю.К - 41 стр.

UptoLike

Распределять серверы по клиентам мог бы специальный рас-
пределяющий процесс, но в этом нет особой необходимости: можно
выделить глобальный канал open, в который клиент и направляет
запрос на получение доступа к с вободному серверу.
Каждый свободный файловый сервер опрашивает канал open
и, обнаружив там запрос, отправляет кл иен ту ответ о готовности
принять запрос (указав в ответе свой идентификатор) и ожидает
запросы от этого клиента на открытие файлов.
Клиент отправляет запрос на открытие файла в специальный
канал access[i], где i идентификатор файлового сервера, ожи-
дающего этот з апрос .е. сервера, ответившего клиенту о своей
готовности). При закрытие файла сервер освобождается и снова
ждет запросов.
Взаимодействие между клиентом и сервером в приводимой ни-
же программе является отражением стиля программирования, на-
зываемого программированием “непрерывного диалога”: клиент на-
чинает диалог с файловым сервером с помощью запроса open. Да-
лее клиент продолжает общаться с тем же сервером.
ПРОГРАММА “ФАЙЛОВЫЕ СЕРВЕРЫ И КЛИЕНТЫ”
(“непрерывный диалог”)
type kind=enum(READ, WRITE, CLOSE);
chan open(string fname; int clientID);
# запросы на открытие
chan access[n](kind k; [типы других аргументов]);
# канал доступа клиента к серверу
chan open_reply[m](int serverID);
# ответ сервера на запрос об открытии:
# id сервера или ошибка
chan access_reply[m]([типы результатов]);
# канал передачи результатов клиенту:
# данные, ошибки
process File_Server[i=0 to n-1] {
string fname; int clientID;
kind k; [переменные для других аргументов];
bool more=false;
[переменные для локального буфера, кэш-памяти и т. д.];
42