![]() Проекты на Аде Уроки Ады Документация Конференции Разработки Примеры SSqrt asynch_transfer entry_family finalizer Каталог ПО Полезные ссылки Поиск в Сети Скачать Прочее |
Семейства входовИспользуя описание семейства входов можно одним выражением языка описать целое множество входов задачи. Каждый вход из семейства входов имеет одинаковый набор параметров. В момент рандеву, для указания конкретного входа, используется индекс из заданного диапазона.
-- Family of entries usage example.
-- Author: Dmitriy Anisimkov.
-- License: GPL
with Ada.Text_IO;
procedure Entry_Family is
task type Task_Type (Length : Positive) is
entry Call (Positive range 1 .. Length) (Data : String);
end Task_Type;
task body Task_Type is
begin
for J in 1 .. Length loop
accept Call (J) (Data : String) do
Ada.Text_IO.Put_Line (Data);
end Call;
delay 0.125;
end loop;
end Task_Type;
Task_Object : Task_Type (8);
begin
for J in reverse 1 .. Task_Object.Length loop
select
Task_Object.Call (J) (Integer'Image (J));
or delay 0.25;
Ada.Text_IO.Put_Line (Integer'Image (J) & " Timeout");
end select;
end loop;
for J in 2 .. Task_Object.Length loop
Task_Object.Call (J) (Integer'Image (J));
end loop;
end Entry_Family;
|
|