Введение в программирование - Учебное пособие (Корочкин А. В.)

9.12 приоритеты   задач

Каждая задача может иметь приоритет, который задается с помо­щью прагмы PRIORITY:

pragma   PRIORITY( Выражение);

Использование данной прагмы разрешено непосредственно в специ­фикации задачи, защищенного модуля или описательной части под­программы. Выражение должно иметь подтип Priority целого типа, определенного в пакете System.

Приоритет задачи определяет ее поведение при состязании с другими задачами за системные ресурсы, например центральный процессор. За­дача, имеющая больший приоритет, получает преимущества. Если две задачи с разными приоритетами готовы к выполнению, то первой вы­полняется задача с более высоким проиоритетом. Если задачи имеют одинаковый приоритет ( или он не задан), то порядок выполнения та­ких задач не определен.

В Аде 83 приоритет задачи фиксировался при ее описании и не мог меняться, то есть был статическим. В Аде 95 приоритет задачи может быть изменен в процессе ее существования ( кроме приоритета, опреде­ленного для подпрограммы), то есть является динамическим.

102

103

Глава 9.   Задачи

Ада 95. Введение в программирование

 

 

Р Например :

task   Police is

pragma Priority (10); end Police;

task Save is

entry   Receive (X : in Elem );

pragma    Priority ( N + 2 ); end   Save;

Развитый механизм планирования выполнения задач, основанный на использовании статических и динамических приоритетов, в языке обеспечивается средствами, определенными в Приложении "Системы реального времени".

УПРАЖНЕНИЯ:

•   Используя прагму   Priority , исследуйте порядок запуска задач.

СОВЕТЫ:

*  Используйте задачи для описания параллельных алгоритмов.

*  Не полагайтесь на прагму   Priority ; отдавайте предпочтение сред­ствам языка для разработки систем реального времени

ИЗМЕНЕНИЯ:

О Спецификация задачного типа может иметь приватную часть.

О В описании задачного типа можно использовать дискриминант.

О Новый оператор Requeue.

О Новая форма оператора отбора   Select.

О Новая форма оператора завершения Abort.

CJ Новая форма оператора задержки  Delay until.

О Новые прагмы для разделяемых переменных : Atomic и Volatile.

О Изменены праила работы с приоритетами задач.