В одной инструкции отбора, допускается
В одной инструкции отбора, допускается наличие более одной альтернативы таймаута.
При этом, будет обрабатываться та альтернатива таймаута, которая имеет наименьший интервал времени.
Отметим также, что в пределах одной инструкции отбора не допускается совместное использование различных альтернатив таймаута для которых одновременно заданы относительные и абсолютные интервалы времени.
При применении инструкций отбора следует учитывать, что использование альтернативы завершения работы задачи (
terminate), альтернативы таймаута (
delay) и раздела
else
в пределах одной инструкции отбора является взаимно исключающим.
Кроме того, любой вариант инструкции отбора обязан содержать хотя бы одну альтернативу выбора, в которой указана инструкция принятия рандеву
accept.
Еще одной особенностью инструкций отбора является опциональная возможность указания дополнительной проверки какого-либо условия для альтернатив принятия рандеву, завершения работы задачи и таймаута.
Для указания такой проверки используется конструкция вида: "
when условие =>", - где проверяемое условие описывается с помощью логического выражения, результат вычисления которого должен иметь значение предопределенного логического типа Standard.Boolean.
Как правило, такую проверку назвают защитной или охранной (guard), а ее использование может иметь следующий вид:
declare
. . . Service_1_Counter : Integer; . . . Service_N_Counter : Integer; . . . begin
. . . loop
. . . select
when (Service_1_Counter > 0) => accept Service_1 [ параметры для Service_1 ] do
. . . end Service_1; or
. . . or
when (Service_N_Counter > 100) => accept Service_N [ параметры для Service_N ] do
. . . end Service_N; end select
end loop; . . . end;
|
Вычисление значения логического выражения осуществляется в начале выполнения инструкции отбора.
Если результат вычисления выражения True, то соответствующая альтернатива имеет право быть выбранной инструкцией отбора, если результат False, альтернатива выбрана не будет, причем даже в том случае, когда какая-либо задача-клиент осуществила вызов соответствующего входа и ждет обслуживания.
Следует также учесть, что в случае, когда проверки условий используются для всех альтернатив инструкции отбора, и результаты проверок всех условий имеют значение False, это приведет к возбуждению исключения Program_Error.
Альтернативу отбора можно назвать открытой, когда для нее не указана дополнительная проверка условия или когда значение результата проверки условия есть True.
В противном случае альтернативу отбора можно назвать закрытой.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий