Справочное руководство по языку Ада-83


Условные вызовы входов


Условный вызов входа производит вызов входа, который отменяется, если рандеву нельзя осуществить немедленно.

условный-вызов-входа ::= select

оператор-вызова-входа [последовательность-операторов] else

последовательность-операторов end select;

При выполнении условного вызова входа вначале вычисляется имя входа. Затем выполняются требуемые вычисления фактических параметров, как при вызове подпрограмы (см. 6.4).

Вызов входа отменяется, если выполнение вызванной задачи не достигло точки, в которой она готова к принятию входа (т.е. не достигнуты оператор принятия соответствующего входа или оператор отбора с открытой альтернативой принятия этого входа), или существует очередь ранее сделанных вызовов этого входа. Если вызванная задача достигла оператора отбора, но альтернатива принятия этого входа не отобрана, то вызов входа отменяется.

Если вызов входа отменен, то выполняются операторы раздела иначе. В противном случае происходит рандеву и выполняется последовательность операторов после вызова входа (если она есть).

Выполнение условного вызова входа возбуждает исключение-TASKING- ERROR, если вызванная задача уже закончила свое выполнение (см. разд. 9.10 для случая, когда вызванная задача становится аварийной).

Пример:

procedure SPIN(R : RESOURCE) is

begin

loop

select

R.SEIZE; return;

else

null;

--занято, надо подождать end select:

end loop;

end;

Ссылки:

аварийная задача 9.10, выполнение 4.5, выражение 4.4, задача 9, законченная задача 9.4, индекс входа 9.5, исключение TASKING_ERROR 11.1, оператор вызовов входа 9.5, оператор отбора 9.7, оператор принятия 9.5, открытая альтернатива 9.7.1, очередь вызова входа 9.5, последовательность операторов 5.1, раздел фактических параметров 6.4, рандеву 9.5, семейство входов 9.5

9.7.3. ВРЕМЕННЫЕ ВЫЗОВЫ ВХОДОВ

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

временной-вызов-входа ::= select

оператор-вызова-входа [последовательность - операторов] or




Начало  Назад  Вперед



Книжный магазин