Справочник Ada 2012
9 Задачи и синхронизация
Выполнение программы Ada состоит из выполнения одной или нескольких задач. Каждая задача представляет отдельный поток управления, который выполняется независимо и параллельно между точками, где она взаимодействует с другими задачами. Различные формы взаимодействия задач описаны в этом разделе и включают:
- активацию и завершение задачи;
- вызов защищенной подпрограммы защищенного объекта, предоставляющего эксклюзивный доступ для чтения-записи или одновременный доступ только для чтения к общим данным;
- вызов входа, либо другой задачи, позволяющий синхронное взаимодействие с этой задачей, либо защищенного объекта, позволяющего асинхронное взаимодействие с одной или несколькими другими задачами, использующими этот же защищенный объект;
- временное действие, включая простое оператор задержки, вызов входа с ограничением времени или прием, или асинхронное оператор выбора с ограничением времени (см. следующий пункт);
- асинхронную передачу управления в рамках оператора асинхронного выбора, когда задача приостанавливает выполнение и начинает выполнение в другой точке в ответ на завершение вызова входа или истечения времени ожидания;
- оператор прерывания, позволяющий одной задаче вызвать завершение другой задачи.
Кроме того, задачи могут взаимодействовать косвенно, читая и обновляя (незащищенные) общие переменные, предполагая, что доступ должным образом синхронизирован через какой-либо другой вид взаимодействия задач.
Статическая семантика
Свойства задачи определяются соответствующим объявлением задачи и task_body, которые вместе определяют программный модуль, называемый единицей задачи.
Динамическая семантика
Со временем задачи проходят через различные состояния. Задача изначально неактивна; после активации и до ее завершения она либо заблокирована (в рамках какого-либо взаимодействия задач), либо готово к выполнению. Будучи готовой, задача конкурирует за доступные ресурсы выполнения, необходимые для ее работы.
ПРИМЕЧАНИЯ
1 Параллельное выполнение задач может быть реализовано на многокомпьютерных системах, многопроцессорных системах или с чередованием выполнения на одном физическом процессоре. С другой стороны, всякий раз, когда реализация может определить, что требуемые семантические эффекты могут быть достигнуты, когда части выполнения данной задачи выполняются разными физическими процессорами, действующими параллельно, она может выбрать выполнение их таким образом.