Ада-95. Компилятор GNAT


Инструкция перенаправления очереди requeue - часть 6


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

В процессе выполнения перенаправления, не происходит никаких переопределений параметров.

Вместо этого, значения параметров прямо переносятся в новый вызов.

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

Это может вызвать некоторые трудности, поскольку выполнение инструкции принятия accept или тела защищенного входа будет завершено в результате выполнения инструкции перенаправления requeue

и локальные переменные будут, таким образом, деаллоцированы (deallocated).

Необходимо соответствие используемых подтипов между вновь вызываемым целевым входом (если он имеет какие-либо параметры) и текущим входом.

Это позволяет использовать то же самое представление для нового множества параметров, когда они передаются по значению (by-copy) или по ссылке (by-reference), а также исключить необходимость размещения (allocate) нового пространства для хранения параметров.

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

В заключение, как общий итог обсуждения инструкции перенаправления requeue

и логики ее использования, сделаем следующие выводы:

  • Инструкция перенаправления requeue

    допустима внутри тела защищенного входа или внутри инструкции принятия рандеву accept.

    Целевой вход (допустим тот же самый вход) может быть в той же самой задаче или том же защищенном объекте, или другой задаче или другом защищенном объекте.

    Возможно использование любых перечисленных комбинаций.

  • Любые фактические параметры оригинального вызова передаются к новому входу.

    Следовательно, новый вход должен иметь такой же самый профиль параметров или не иметь никаких параметров.




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