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

UptoLike

Для иллюстрации рассмотрим процесс сортировки n чисел в по-
рядке возрастания. Пусть имеется два канала: input входной ка-
нал, output выходной и sent[i] i значение, отправляемое в
output.
Процесс сортировки может быть описан следующим образом:
SORT: ( i: 1i<n: sent[i]sent[i+1])
V
{значения, отправляемые в output, состоят из чисел,
полученных в input}
Схема процесса такова:
process Sort {
получить значения из канала input;
отсортировать числа;
передать отсортированные числа в канал output
}
Напомним, что процесс receive является блокирующим. Для
того, чтобы Sort начал работу требуется, чтобы он определил мо-
мент получения всех n чисел, либо это число n должно быть переда-
но процессу Sort заранее, либо (поскольку поставляющий процесс
обычно не имеет информации о количестве чисел заранее) поток
чисел, подлежащих сорти ровке, должен заканчиваться специаль-
ным маркером EOS.
Интересно использовать параллелизм при слиянии (соедине-
нии). Это можно сделать следующим образом: пусть имеется про-
цесс сливающий (соединяющий) два отсортированных потока чисел
в один отсортированный поток (in1, in2 входные каналы, out
выходной канал):
GLUE: in1 и in2 пусты
V
sent[n+1]==EOS
V
(i: 1i<n: sent[i]sent[i+1])
V
{значения, отправляемые в канал out, являются
перестановкой чисел, полученных из каналов in1 и in2 }
П о я с н е н и я : в первой строке процесса GLUE сказано, что
in1 и in2 полностью использованы и в конец строки sent поставлен
символ EOS, во второй строке процесса указано, что значения в sent
расположены в порядке возрастания. В конце сказано, что значения
на выходе являются перестановкой значений входа.
11