Редактирование: Язык Ада, 05 лекция (от 24 марта)
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
+ | =Лекция №5.= | ||
=Модульность= | =Модульность= | ||
==Дочерний пакет== | ==Дочерний пакет== | ||
Строка 28: | Строка 29: | ||
* Предоставляемые языком средства должны хорошо согласовываться с привычной моделью асинхронных процессов. | * Предоставляемые языком средства должны хорошо согласовываться с привычной моделью асинхронных процессов. | ||
* Ада ориентирована на концепцию внутренней дисциплины использования разделяемых ресурсов | * Ада ориентирована на концепцию внутренней дисциплины использования разделяемых ресурсов | ||
- | Задачи – основной программный модуль | + | Задачи – основной Адовский программный модуль, предназначенный для описания асинхронных процессов. Задачи имеет спецификацию и тело. Спецификация задачи описывает интерфейс работы с внешним миром, тело описывает сам процесс. Задача – типизированный объект. Задачи нельзя раздельно компилировать, они всегда куда-то вложены. Каждая спецификация задачи требует наличие типа. Написать только спецификацию и не написать тело нельзя – компилятор выдаст ошибку. Вложенность описания задач может быть любая, одна задача может быть в другой. |
Пусть мы попали в процесс. Происходит обработка объявлений. Перед тем, как начать выполняться первому оператору из процесса-хозяина, запускаются все остальные процессы. | Пусть мы попали в процесс. Происходит обработка объявлений. Перед тем, как начать выполняться первому оператору из процесса-хозяина, запускаются все остальные процессы. | ||
Запускающий процесс называют мастер-процессом. Пока не закончатся все запущенные задачи, мастер-процесс не завершается. | Запускающий процесс называют мастер-процессом. Пока не закончатся все запущенные задачи, мастер-процесс не завершается. | ||
Строка 36: | Строка 37: | ||
Если есть вход в задаче, то в теле задачи этому входу должен соответствовать как минимум один оператор приема входа. В нем между begin и end описывается то, что происходит при приеме входа. Вызывающая программа смотрит, готова ли вызываемая обслуживать вызов входа. Если не готова, то вызов становится в очередь вызовов к данному входу. Этот механизм получил названия ассиметричного рандеву. Вызывающий знает, кого он вызывает, а вызываемому все равно, кто его вызвал, тк обслужить – это выполнить оператор приема. Никаких следов от того, кто здесь был. Когда вы – клиент, вам нужно понимать, какой мастер вам нужен. Клиенту важно выбрать мастера, мастеру все равно, кто клиент, лишь бы по типу подходил. | Если есть вход в задаче, то в теле задачи этому входу должен соответствовать как минимум один оператор приема входа. В нем между begin и end описывается то, что происходит при приеме входа. Вызывающая программа смотрит, готова ли вызываемая обслуживать вызов входа. Если не готова, то вызов становится в очередь вызовов к данному входу. Этот механизм получил названия ассиметричного рандеву. Вызывающий знает, кого он вызывает, а вызываемому все равно, кто его вызвал, тк обслужить – это выполнить оператор приема. Никаких следов от того, кто здесь был. Когда вы – клиент, вам нужно понимать, какой мастер вам нужен. Клиенту важно выбрать мастера, мастеру все равно, кто клиент, лишь бы по типу подходил. | ||
- | {{ | + | {{Язык Ада. Весна 2010}} |