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


         

Типы и объекты задач - часть 2


/p>

В данном примере описана одиночная задача анонимного типа Anonimous_Task, тип задачи Simple_Task и переменная задачи Simple_Task_Variable, имеющая тип Simple_Task.

Примечательно, что описание типа задачи Simple_Task содержит дискриминант, значение которого используется как параметр задачи и указывается при описании переменной задачи Simple_Task_Variable.

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

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

Рассмотрим еще один простой пример, который демонстрирует использование задачного типа для описания более одного экземпляра объекта задачи.

with Ada.Text_IO;

procedure Multitasking_Demo_2 is

-- спецификация типа задачи task type Simple_Task (Message: Character; How_Many: Positive);

-- тело типа задачи task body Simple_Task is

begin -- для Simple_Task

for Count in 1..How_Many loop

Ada.Text_IO.Put_Line("Hello from Simple_Task " & Message); delay 0.1; end loop;

end Simple_Task;

-- переменные задачного типа Simple_Task_A: Simple_Task(Message => 'A', How_Many => 5); Simple_Task_B: Simple_Task(Message => 'B', How_Many => 10);

begin -- для Multitasking_Demo_2

null;

end Multitasking_Demo_2;

В этом примере, тип задачи Simple_Task содержит два дискриминанта: дискриминант Message типа Character используется при выдаче приветственного сообщения, как и ранее, а дискриминант How_Many используется для указания количества выдаваемых сообщений.

Таким образом, переменная задачи Simple_Task_A

выдаст пять приветствий, а переменная Simple_Task_B - десять.




Содержание  Назад  Вперед