Раздел 13.1 - Основы многозадачности

В языке Ada имеется встроенная поддержка параллельной обработки при помощи задач Ada. Задачи в Ada выполняются параллельно и могут взаимодействовать друг с другом при помощи нескольких различных механизмов. В сущности, каждая задача работает так, как будто она запущена на отдельном компьютере. Иногда задачи называют ``нитями'' или ``легковесными процессами''. Более часто встречающиеся термины для описания <<задачеподобного>> поведения - ``процесс'', ``агент'' или ``активный объект''.

Когда могут понадобиться задачи? Хорошо, приведем пример: представьте, что Вы разрабатываете Web-браузер. Этот браузер будет загружать информацию через некоторое (медленное) коммуникационное устройство, а затем отображать ее. Конечно же, можно подождать, пока вся информация не станет доступной и лишь затем отображать ее, но это, вероятно, заставит пользователя слишком долго ждать. Лучшим решением было бы создание двух задач, одна из которых загружала, а другая отображала информацию. По мере получения информации первая задача может по частям передавать загруженные данные второй задаче. Вторая задача может отображать информацию для пользователя, даже если первая еще не завершила загрузку всех данных. Таким образом, эти две задачи могут работать ``одновременно''.

Задачи можно стартовать (активировать) и остановить (завершить). Существует множество способов взаимодействия задач, после того, как они активированы. Приведем основные:

Мы обсудим эти способы взаимодействия в следующих нескольких разделах.

Некоторые компьютерные системы в действительности состоят из нескольких компьютеров. Различные задачи могут быть запущены и на различных машинах, если Ada-компилятор и/или операционная система поддерживает такую возможность. Это может значительно ускорить работу программы.

У задач есть несколько важных особенностей:

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


Упражнение:

Программа XYZ работает на одном процессоре и содержит 10000 задач. Для каждого переключателя на пульте управления и каждого индикатора дисплея заведена отдельная задача. Хорошо ли спроектирована программа?

  1. Программа, вероятно, спроектирована хорошо.
  2. Программа, вероятно, спроектирована плохо.

Вы можете также:

PREVIOUS Перейти к предыдущему разделу

NEXT Перейти к следующему разделу

OUTLINE Вернуться к содержанию Урока 13

David A. Wheeler ([email protected])

Перевод:   Общая редакция перевода:

Исходная копия этого документа находится по адресу "http://www.adahome.com/Tutorials/Lovelace/s13s1.htm".

Исходная копия перевода размещена на сайте http://www.ada-ru.org