Языки программирования - концепции и принципы

ность из одного или нескольких


е. последователь­ ность из одного или нескольких значений, возможно, разных типов.

Например:

(True, 5.6, 'С', False)



— это четверной кортеж, состоящий из булева с плавающей точкой, символь­ного и снова булева значений.

    Существуют три операции, которые обращаются к кортежной области:

out   — поместить кортеж в кортежную область;

in     — блокировка, пока не существует соответствующего кортежа, затем его удаление

            (см. рис. 12.4);

read — блокировка, пока не существует соответствующего кортежа (но без удаления его).

   Синхронизация достигается благодаря тому, что команды in и read должны определять сигнатуру кортежа: число элементов и их типы. Только если кор­теж существует с соответствующей сигнатурой, может быть выполнена опе­рация получения, иначе процесс будет приостановлен. Кроме того, один или несколько элементов кортежа могут быть заданы явно. Если значение задано в сигнатуре, оно должно соответствовать значению в той же самой позиции кортежа; если задан тип, он может соответствовать любому значению этого типа в данной позиции. Например, все последующие операторы удалят пер­вый кортеж в кортежной области на рис. 12.4:

in(True, 5.6, 'С', False)

in(B: Boolean, 5.6, 'С', False)

in(True, F: Float, 'С', Ё2: Boolean)

Второй оператор in возвратит значение True в формальном параметре В; тре­тий оператор in возвратит значения 5.6 в F и False — в В2.

    Кортежная область может использоваться для диспетчеризации вычисли­тельных работ для процессов, которые могут находиться на разных компью­терах. Кортеж ("job", J, С) укажет, что работу J следует назначить компьюте­ру С. Каждый компьютер может быть заблокирован в ожидании работы:

in("job", J: Jobs, 4);                                          -- Компьютер 4 ждет работу

Задача диспетчеризации может «бросать» работы в кортежную область.

Содержание  Назад  Вперед