Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
02.05.2014
Размер:
559.62 Кб
Скачать

Алгоритм a211: Последовательность двух команд

          1. Описание алгоритма

СФА: Структурная формула алгоритма

Алгоритм этапа обработки (основного перехода тех. операции):

A211 = (Z10–Z2) =Z10–Z2

Алгоритм операционного цикла // включая загрузку и разгрузку

A = (Zz – A211 – Zr) = (Zz – (Z10 –Z2) – Zr) = (Zz – Z10 –Z2 – Zr)

ССА: Структурная схема алгоритма

Вариант 1 Вариант 2

ДИА: Диаграмма исполнения алгоритма: mz10 = 20,mz2 = 100

ВТА: Вербальный текст алгоритма / ПиПТ: Питон-подобный текст

ГИ: Горизонтальное исполнение

ШТА: Шаблон текста алгоритма

A211 = (Z10–Z2) =Z10–Z2

A211 = Z10–Z2

РТА: Рабочий текст алгоритма

algA211( ):Zh10( );Zh2( )

ВИ: Вертикальное исполнение

ШТА: Шаблон текста алгоритма РТА: Рабочий текст алгоритма

A211 A211= A211= A211= A211= alg A211( ):

= ( ( | Z10 – | Z10 Zh10( )

( Z10 – |Z10 – |Z2 |Z2Zh2( )

Z10Z2 |Z2

– ) )

Z2

)

          1. Исходный текст программной реализации

ВИ: Вертикальное исполнение

defeA211(ccrt, hCycles): # alg A211( ):

hCycles.Zh(ccrt.techsys.head10) # Zh10( ) - типовой цикл СГ10

hCycles.Zh(ccrt.techsys.head2) # Zh2( ) - типовой цикл СГ2

Алгоритм a222: Параллельная конъюнкция двух команд

          1. Исходное общее описание алгоритма

СФА: Структурная формула алгоритма

Алгоритм этапа обработки (основного перехода тех. операции):

A222 = (Z10&Z2) = (Z10 #&Z2) = #(Z10,Z2)& = #Z10,Z2&

Алгоритм операционного цикла // включая загрузку и разгрузку

A = (Zz – A222 – Zr) = (Zz – (Z10 & Z2) – Zr)

ССА: Структурная схема алгоритма

Вариант 1 Вариант 2

ДИА: Диаграмма исполнения алгоритма: mz10 = 20,mz2 = 100

          1. Многопоточные представления

ССА: Структурная схема алгоритма / Вариант 3

Дополнительный поток (thread):

команда Z2, упакованная в поток

Основной поток (Main)

Структурные операторы:

FZi = F(Zi) = Fork(Zi) – оператор узла вилки:

упаковка в поток и вызов команды Zi в потоке

JZi= J&Zi = J&(Zi) = Join_&(Zi) – оператор узла сборки:

ожидание (wait) завершения команды Zi

ВТА: Вербальный текст алгоритма / ПиПТ: Питон-подобный текст

ГИ: Горизонтальное исполнение

ШТА: Шаблон текста алгоритма

A222 = (Z10 &Z2) = (Z10 #&Z2) = #(Z10,Z2)& = #Z10,Z2 & =

= # Z10Z2 & =#Z10Z2&=#Z10Z2&=

= FZ2Z10JZ2 =FZ2–Z10–J&Z2

РТА: Рабочий текст алгоритма

alg A222 ( ): Fork(Zh2( )); Zh10( ); Join_&(Zh2( ))

ВИ: Вертикальное исполнение

ШТА: Шаблон текста алгоритма РТА: Рабочий текст алгоритма

A222 = alg A222( ):

| FZ2 Fork(Zh2( ))

| Z10Zh10( )

| J&Z2Join_&(Zh2( ))

          1. Исходный текст программной реализации

ВИ: Вертикальное исполнение

Простой вариант:

def eA222(ccrt, hCycles): // alg A222():

thread.start_new(hCycles.Zh, (ccrt.techsys.head2, )) // Fork(Zh2())

hCycles.Zh(ccrt.techsys.head10) // Zh10()

while not ccrt.techsys.head2.yzh: // Join(Zh2()): ожидание (head2.yzh = 1)

pass // пустой оператор тела цикла

// Выполняется активное ожидание события – процессор занят до конца цикл

Более рациональный вариант:

defeA222(ccrt,hCycles): //algA222():

thread.start_new(hCycles.Zh, (ccrt.techsys.head2, )) // Fork(Zh2())

hCycles.Zh(ccrt.techsys.head10) // Zh10()

while not ccrt.techsys.head2.yzh: // Join(Zh3()): ожидание (head2.yzh = 1)

time.sleep(0.1) // Задержка повторения цикла:

// Пассивное (почти пассивное) ожидание события:

// процессор освобождается на время задержки

Соседние файлы в папке Расчетно-графическая работа1