- •Ргр: Расчетно-графическая работа
- •Сса: Структурная схема алгоритма. Вариант 1. Линейный стиль
- •Диа: Диаграмма исполнения алгоритма
- •Специальная подготовка алгоритма
- •Сса: Структурная схема алгоритма. Вариант 2. Мозаичный стиль
- •Итоговая сфа: Структурная формула алгоритма:
- •Вербальные (словесные) тексты алгоритма
- •Многопоточная программная реализация алгоритма
- •Реализация компонент алгоритма
- •Исходный текст программной реализации
Вербальные (словесные) тексты алгоритма
Промежуточные Питон-подобные формы записи алгоритма
ВТА: Вербальный текст алгоритма
ГИ: Горизонтальное исполнение
ШТА: Шаблон текста алгоиртма
A40 = Z5
A30 = Z7 – FA40 – Z4 – JA40 – Z7
A20 = Z3 – Z6
A10 = Z6 – FA20 – Z0 – JA20
A581 = FA30 – FA10 – Z1 – JA10 – JA30
РТА: Рабочий текст алгоритма
alg A40( ): Zh5( )
alg A30( ): Zh7; Fork(A40( )); Zh4; Join_&(A40( ));Zh7
alg A20( ): Zh3( );Zh6
alg A10( ): Zh6; Fork(A20( )); Zh0; Join_&(A20( ))
alg A581( ): Fork(A30( )); Fork(A10( )); Zh1( ); Join_&(A10( )); Join_&(A30( ))
ВИ: Вертикальное исполнение
ШТА: Шаблон текста алгоритма |
РТА: Рабочий текст алгоритма | |||
A40 = Z5 |
A40 = Z5 |
A40 = | Z5 |
A40 = | Z5 |
Alg40: Zh5() |
A30 = Z7 – FA40 – Z4 – JA40 – Z7 |
A30 = Z7 – FA40 – Z4 – JA40 – Z7
|
A30 = | Z7 – | FA40 – | Z4 – | JA40 – | Z7
|
A30 = | Z7 | FA40 | Z4 | JA40 | Z7 |
alg A30(): Zh7( ) Fork(A40( )) Zh4 Join_&(A40( )) Zh7( ) |
A20 = Z3 – Z6 |
A20 = Z3– Z6 |
A20 = | Z3– | Z6 |
A20 = | Z3 | Z6 |
Alg20: Zh3() Zh6() |
A10 = Z6 – FA20 – Z0 – JA20 |
A10 = Z6 – FA20– Z0 – JA20
|
A10 = | Z6 – | FA20– | Z0 – | JA20
|
A10 = | Z6 | FA20 | Z0 | JA20
|
alg A10(): Zh6( ) Fork(A20( )) Zh0 Join_&(A20( )) |
A581= FA30 – FA10 – Z1 – JA10 – JA30 |
A581= FA30 – FA10– Z1– JA10 – JA30–
|
A581= | FA30 – | FA10– | Z1– | JA10 – | JA30–
|
A581= | FA30 | FA10 | Z1 | JA10 | JA30
|
alg A581(): Fork(A30()) Fork(A10()) Zh1() Join_&(A10()) Join_&(A30())
|
Многопоточная программная реализация алгоритма
Реализация компонент алгоритма
Далее представлена многопоточная программная реализация заданных фрагментов исходного параллельного алгоритма.
Язык программирования: Питон (Python)
РТА: Рабочий текст алгоритма |
ИТП: Исходный текст подпрограмм |
Alg40: Zh5() |
def A40(ccrt, hCycles): hCycles.za40 = 0 # Переменная индикации окончания A40 hCycles.Zh(ccrt.techsys.head5) hCycles.za40 = 1 # Индикация окончания процесса A40 |
alg A30(): Zh7( ) Fork(A40( )) Zh4 Join_&(A40( )) Zh7( ) |
def A30(ccrt, hCycles): hCycles.za30 = 0 # Переменная индикации окончания A30 hCycles.Zh(ccrt.techsys.head7) thread.start_new(expSub.A40, (ccrt, hCycles, )) hCycles.Zh(ccrt.techsys.head4) while not hCycles.za40: time.sleep(0.1) hCycles.Zh(ccrt.techsys.head7) hCycles.za30 = 1 # Индикация окончания процесса A30
|
alg20: Zh3() Zh6() |
def A20(ccrt, hCycles): hCycles.za20 = 0 # Переменная индикации окончания A20 hCycles.Zh(ccrt.techsys.head3) hCycles.Zh(ccrt.techsys.head6) hCycles.za20 = 1 # Индикация окончания процесса A20 |
alg A10(): Zh6( ) Fork(A20( )) Zh0 Join_&(A20( )) |
def A10(ccrt, hCycles): hCycles.za10 = 0 # Переменная индикации окончания A10 hCycles.Zh(ccrt.techsys.head6) thread.start_new(expSub.A20, (ccrt, hCycles, )) hCycles.Zh(ccrt.techsys.head0) while not hCycles.za20: time.sleep(0.1) hCycles.za10 = 1 # Индикация окончания процесса A10 |
alg A581(): Fork(A30()) Fork(A10()) Zh1() Join_&(A10( )) Join_&(A30( )) |
def eA581(ccrt, hCycles): thread.start_new(expSub.A30, (ccrt, hCycles, )) thread.start_new(expSub.A10, (ccrt, hCycles, )) hCycles.Zh(ccrt.techsys.head1) while not hCycles.za10: while not hCycles.za30: time.sleep(0.1)
|