Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

9 Задачи и синхронизация

Выполнение программы Ada состоит из выполнения одной или нескольких задач. Каждая задача представляет собой обособленную активность, которая протекает независимо и одновременно между точками, где она взаимодействует с другими задачами. Одна задача в контексте параллельной конструкции может представлять собой несколько логических потоков управления, которые могут выполняться параллельно; в других контекстах каждая задача представляет собой один логический поток управления.
Различные формы взаимодействия задач описаны в этом разделе и включают:
  • активацию и завершение задачи;
  • вызов защищенной подпрограммы защищенного объекта, обеспечивающего эксклюзивный чтение-запись доступа или одновременный чтение-только доступ к общим данным;
  • вызов входа, либо другой задачи, позволяющий синхронное взаимодействие с этой задачей, либо защищенного объекта, позволяющий асинхронное взаимодействие с одной или несколькими другими задачами, использующими этот же защищенный объект;
  • временной операцией, включая оператор простой задержки, временной вызов входа или прием, или временной асинхронный оператор выбора (см. следующий пункт);
  • асинхронную передачу управления как часть асинхронного оператора выбора, где задача прекращает текущее выполнение и начинает выполнение в другой точке в ответ на завершение вызова входа или истечение срока задержки;
  • оператор прерывания, позволяющий одной задаче вызвать завершение другой задачи.
Кроме того, задачи могут взаимодействовать косвенно, считывая и обновляя (без защиты) общие переменные, предполагая, что доступ должным образом синхронизирован с помощью какого-либо другого вида взаимодействия задач.

Статическая семантика

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

Динамическая семантика

Со временем задачи проходят через различные состояния. Задача изначально неактивна; после активации и до ее завершения она либо блокируется (как часть взаимодействия задач), либо готовa к выполнению. Будучи готовой, задача конкурирует за доступные ресурсы выполнения, необходимые для выполнения. В контексте параллельной конструкции одна задача может одновременно использовать несколько процессорных ресурсов.
ПРИМЕЧАНИЕ Одновременное выполнение задач может быть реализовано на многокомпьютерных системах, многопроцессорных системах или с интеркалированным выполнением на одном физическом процессоре. С другой стороны, всякий раз, когда реализация может определить, что необходимые семантические эффекты могут быть достигнуты, когда части выполнения одного логического потока управления выполняются разными физическими процессорами параллельно, она может выбрать выполнить их таким образом.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API