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

       

Динамическое создание объектов задач


Ада предоставляет возможность динамически порождать объекты задач с помощью 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.



Содержание раздела