Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СИСТЕМОТЕХНИЧЕСКОЕ ПРОЕКТИРОВАНИЕ.doc
Скачиваний:
73
Добавлен:
01.05.2014
Размер:
1.47 Mб
Скачать

Таблицы решений

См [2]

Программирование, управляемое событиями (событийное управление)

Классы, события, свойства события, обработчики событий (Evant Handler), потоки

Классы событий (after, befor, OnChange,OnCreate,OnClick, OnActivate............)

Определение событий

Обработка событий

Общая схема событийного управления

События сервера базы данных

Проектирование логики на основе асинхронных взаимодействий Базовые варианты обработки точек входа

В качестве основы для разработки логики будем рассматривать модель, используемую для описания задач в языке Ада. Задача характеризуется спецификацией задачи и "телом" задачи. В спецификации указывается имя задачи и те "услуги", которые она может оказать через "точки входа" (entry). В "теле" задачи (task body) указывается последовательность операторов для выполнения этих услуг.

Пример: описания задачи "А", имеющей точку входа "а".

task A is

{ спецификация задачи}

entry a(...) { спецификация точки входа, предоставляемой задачей А}

end

task body A is

{ тело задачи}

{операции}

accept a(...) do ..... end {обработка точки входа}

{вызовы других задач}

{операции}

end

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

Пример: задача А вызывает точку входа "в" задачи В.

task A is task B is

end entry E(...)

end

task body A is task body B is

{операции} {операции}

B.E(...) {вызов точки входа} accept E(...) do...end {обработка точки входа}

end end

В данном примере задача А вызывающая, а задача В вызываемая.

Механизм рандеву заключается в том, что вызывающая задача "встречается" с вызываемой и затем ждет пока вызываемая задача обслужит (примет) этот вызов. Если вызываемая задача занята своей работой, или взаимодействует с другой задачей, то вызывающая задача должна ждать. Это вариант классического или безусловного рандеву. Возможно также другое поведение вызывающей задачи, с точки зрения ожидания обслуживания.Рассмотрим эти варианты.

Варианты обращения задачи А ко входу "W" задачи В:

1. Безусловный вызов-обозначение В.W. Если задача В занята своей работой или взаимодействует с другой задачей ( не с А), то задача А будет ждать, может быть бесконечно долго, пока задача В ее обслужит. На входе "W" задачи В может образовы-

ваться очередь из задач, ожидающих обслуживания. Очередь обслуживается по принципу FIFO (first-infirst-out).

Достоинства: нет потерь вызовов.

Недостаток: время ожидание обслуживания может быть бесконечно.

2. Условный вызов- обозначение

select

B.W

else

ALT-ACTION

end select

Если задача В занята своей работой, или взаимодействует с другой задачей (не с А), то задача А не ждет обслужтвания, а выполняет некоторое альтернативное действие (ALT-ACTION).

Достоинства: время ожидания обслуживания равно нулю.

Недостаток: возможна потеря вызовов.

3. Временной вызов- обозначение

select

В.W

or

delay T

ALT-ACTION

end select

Если задача В занята своей работой, или взаимодействует с другой задачей (не с А), то задача А ждет в течение времени Т, если за это время задача В не освободилась, то задача А выполняет некоторое альтернативное действие (ALT-ACTION). На входе

"W" задачи В при временных вызовах может образовываться очередь.

Достоинства: время ожидания обслуживания не превышает время Т.

Недостаток: возможна потеря вызовов.

С точки зрения вызываемой задачи возможны различные варианты обработки вызовов по различным входным точкам. Рассмотрим эти варианты, считая что задача В имеет две входные точки "w" и "r":