
- •Часть 1
- •Общая характеристика алгоритмов
- •Реализуемые алгоритмы
- •Порядок формирования индивидуальных заданий
- •Формирование индивидуального задания. Опорный пример
- •Запись комбинаций параметров настройки панели
- •Меню Настройки
- •Порядок записи комбинаций заданных параметров
- •Порядок загрузки параметров
- •Алгоритм a001: Пустой алгоритм - проходная интерпретация
- •Описание алгоритма
- •Исходный текст программной реализации
- •Алгоритм a101: Единичный алгоритм
- •Описание алгоритма
- •Исходный текст программной реализации
- •Алгоритм a211: Последовательность двух команд
- •Описание алгоритма
- •Исходный текст программной реализации
- •Исходное общее описание алгоритма
- •Многопоточные представления
- •Исходный текст программной реализации
- •Алгоритм a232: Параллельная конъюнкции трех команд
- •Исходное общее описание алгоритма
- •Многопоточные представления
- •Исходный текст программной реализации
Алгоритм a232: Параллельная конъюнкции трех команд
Исходное общее описание алгоритма
СФА: Структурная формула алгоритма
Алгоритм этапа обработки (основного перехода тех. операции):
A323 = (Z2 & Z4 & Z5) = (Z2 #& Z4 #& Z5) =
= #(Z2, Z4, Z5)& = # Z2, Z4, Z5 &
Алгоритм операционного цикла // включая загрузку и разгрузку
A = (Zz – A323 – Zr) = (Zz – (Z2 & Z4 & Z5) – Zr)
ССА: Структурная схема алгоритма
Вариант 1 Вариант 2
ДИА: Диаграмма исполнения алгоритма: mz2 = 40,mz4 = 20,mz5 =50
Многопоточные представления
СФА: Структурная формула алгоритма
A323 = (Z2 & Z4 & Z5) = ((Z2 & Z4) & Z5) = ((Z2 #& Z4) #& Z5)
= #(#(Z2,Z4)&,Z5)& = # #Z2,Z4 &,Z5&
ССА: Структурная схема алгоритма / Вариант 3
ССА: Структурная схема алгоритма / Вариант 4
Дополнительный поток (thread):
команда Z4, упакованная в поток
Основной поток (Main)
Дополнительный поток (thread):
команда Z5, упакованная в поток
Структурные операторы:
FZi = F(Zi) = Fork(Zi) – оператор узла вилки:
упаковка в поток и вызов команды Zi в потоке
J&Zi = J&(Zi) = Join_&(Zi) – оператор узла сборки:
ожидание (wait) завершения команды Zi
ВТА: Вербальный текст алгоритма / ПиПТ: Питон-подобный текст
ГИ: Горизонтальное исполнение
ШТА: Шаблон текста алгоритма
A323 = ((Z2& Z4) & Z5) = ((Z2 #& Z4) #& Z5) =
= #(#(Z2, Z4)&, Z5)& = # # Z2, Z4 &, Z5 & =
= # # Z2 Z4 & Z5 & = # # Z2 Z4 & Z5 & = # # Z2 Z4 & Z5 & =
= # FZ4 Z2 J&Z4 Z5 & = # FZ4 Z2 JZ4 Z5 & = # FZ4 Z2 JZ4 Z5 & =
= FZ5 FZ4 Z2 J&Z4 J&Z5 = FZ5 – FZ4 – Z2– J&Z4 – J&Z5
// Рабочий оператор Z4 связывают:
// слева вилка # – переходит в структурный оператор FZ4;
// справа сборка & – переходит в структурный оператор J&Z4.
// Рабочий оператор Z5 связывают:
// слева вилка # – переходит в структурный оператор FZ5;
// справа сборка & – переходит в структурный оператор J&Z5.
РТА: Рабочий текст алгоритма
alg A323( ): Fork(Zh5( )); Fork(Zh4( )); Zh2( ); Join_&(Zh4( )) ; Join_&(Zh5( ))
ВИ: Вертикальное исполнение
ШТА: Шаблон текста алгоритма РТА: Рабочий текст алгоритма
A222 = alg A222( ):
| FZ5 Fork(Zh5( ))
| FZ4 Fork(Zh4( ))
| Z2 Zh2( )
| J&Z4 Join_&(Zh4( ))
| J&Z5 Join_&(Zh5( ))
Исходный текст программной реализации
ВИ: Вертикальное исполнение
Первичное решение
def eA323(ccrt, hCycles): // alg A222():
thread.start_new(hCycles.Zh, (ccrt.techsys.head5, )) // Fork(Zh5())
thread.start_new(hCycles.Zh, (ccrt.techsys.head4, )) // Fork(Zh4())
hCycles.Zh(ccrt.techsys.head2) // Zh2()
while not ccrt.techsys.head4.yzh: // Join(Zh2()): ожидание (head4.yzh = 1)
pass // пустой оператор тела цикла
while not ccrt.techsys.head5.yzh: // Join(Zh5()): ожидание (head5.yzh = 1)
pass // пустой оператор тела цикла
Модификация:
введение оператора задержки в циклы ожидания завершения параллельной конъюнкции – для разгрузки процессора.
def eA323(ccrt, hCycles): // alg A222():
thread.start_new(hCycles.Zh, (ccrt.techsys.head5, )) // Fork(Zh5())
thread.start_new(hCycles.Zh, (ccrt.techsys.head4, )) // Fork(Zh4())
hCycles.Zh(ccrt.techsys.head2) // Zh2()
while not ccrt.techsys.head4.yzh: // Join(Zh4(): ожидание (head4.yzh = 1)
time.sleep(0.1) // задержка для разгрузки процессора
while not ccrt.techsys.head5.yzh: // Join(Zh5(): ожидание (head5.yzh = 1)
time.sleep(0.1) // задержка для разгрузки процессора