Динамическое создание объектов задач
Ада предоставляет возможность динамически порождать объекты задач с помощью new, что может оказаться полезным, когда необходимо множество объектов задач одного типа.
Предположим, что у нас есть следующая спецификация типа задачи:
task type Counting_Task is
entry Add (Amount : in Integer); entry Current_Total (Total : out Integer); end Counting_Task; |
Мы можем описать ссылочный тип Counting_Task_Ptr, который позволяет ссылаться на объекты задач типа Counting_Task.
Затем мы можем описывать переменные ссылочного типа Counting_Task_Ptr
и с помощью new создавать динамические объекты задач, как показано в следующем примере:
declare
. . . type Counting_Task_Ptr is access Counting_Task; Task_Ptr : Counting_Task_Ptr; -- переменная ссылающаяся на объект задачи . . . begin . . . Task_Ptr := new Counting_Task; -- динамическое создание объекта задачи . . . end; |
Подобным образом можно динамически создать любое необходимое количество объектов задач.
Поскольку реализация Ада-системы не обязана освобождать память, занятую при динамическом создании объекта задачи, то это необходимо выполнять самостоятельно, используя предопределенную настраиваемую процедуру Ada.Unchecked_Deallocation.