§ 3. О языке Linda
Главной отличительной особенностью языка Linda, является
обобщение идеи разделяемых переменных и асинхронной передачи
сообщений. Язык Linda предоставляет программистам эффектив-
ные средства создания параллельных программ: любой последова-
тельный язык можно дополнить примитивами из Linda и получить
параллельный вариант.
Ядром языка являются процедуры (выполняемые асинхронно
и называемые кортежами процессов), помеченные записи — корте-
жи данных, пространство кортежей — пространство совокупностей
взаимосвязанных данных, реализуемое в виде разделяемой ассоци-
ативной памяти. Пространство кортежей похоже на единый разде-
ляемый канал связи, но кортежи не упорядочены. Для доступа к
пространству кортежей в языке имеются шесть примитивов (опе-
раций межпроцессорного обмена данными):
OUT — операция помещения кортежа в пространство кортежей
(запись — аналог
send
; при этом кортеж помещается в в упомяну-
тый ранее канал);
IN — операция извлечения кортежа из пространства кортежей
(чтение — аналог receive: кортеж извлекается из канала);
EVAL — операция создания процесса;
INP — операция ввода (неблокирующая);
RDP — операция чтения (неблокирующая);
RD — операция просмотра (блокирующая).
Пространство кортежей состоит:
– из множества пассивных кортежей;
– из множества активных кортежей.
Каждый кортеж имеет вид
("tag", value_1, . . ., value_n)
где метка "tag" является строкой (для различения кортежей).
Значения (value_1, . . ., value_n) — это нуль или несколь-
ко значений данных (целых чисел, действительных чисел или мас-
сивов).
Для обработки кортежей служат три базовых неделимых при-
митива: OUT, IN, RD.
OUT("tag", expr_1, . . ., expr_n);
— помещение кортежа в пространстве кортежей (аналогично
оператору send, но вместо канала рассматривается пространство
кортежей).
192