-
Вербальные (словесные) тексты алгоритма
Промежуточные Питон-подобные формы записи алгоритма
ВТА: Вербальный текст алгоритма
ГИ: Горизонтальное исполнение
РТА: Рабочий текст алгоритма
alg A30( ): Zh10( )
alg A20( ): Zh2( ); Fork(A30( )); Zh4( ); Join_&(A30( ));
alg A21( ): Zh5( ); Zh2( )
alg A10( ): Fork(A20( )); Zh5( ); Join_&(A20( )); Fork(A21( )); Zh6( );
Join_&(A21( ));
alg A091( ): Zh1( ); Fork(A10( )); Zh3( ); Zh1( ); Join_&(A10( ));
ВИ: Вертикальное исполнение
|
ШТА: Шаблон текста алгоритма |
РТА: Рабочий текст алгоритма |
|||
|
A30 = Z10
|
A30 = Z10
|
A30= | Z10
|
A30= | Z10 |
alg A30( ): Zh10( )
|
|
A20 = Z2 FA30 Z4 – JA30
|
A20 = Z2 - FA30 - Z4 - JA30
|
A20 = | Z2 - | FA30 - | Z4 - | JA30 |
A20 = | Z2 | FA30 | Z4 | JA30 |
alg A20( ): Zh2( ); Fork(A30( )); Zh4( ); Join_&(A30( ));
|
|
A21 = Z5 – Z2
|
A21 = Z5 – Z2
|
A21 = | Z5 – | Z2
|
A21 = | Z5 | Z2
|
alg A21( ): Zh5( ); Zh2( )
|
|
A10 = FA20 – Z5 – JA20 – FA21 – Z6 – JA21
|
A10= FA20– Z5– JA20– FA21– Z6– JA21
|
A10 = | FA20 – | Z5 – | JA20 – | FA21 – | Z6 – | JA21
|
A10 = | FA20 | Z5 | JA20 | FA21 | Z6 | JA21
|
alg A10( ): Fork(A20( )); Zh5( ); Join_&(A20( )); Fork(A21( )); Zh6( ); Join_&(A21( ));
|
|
A091 = Z1 – FA10 – Z3 – Z1 – JA10
|
A091= Z1– FA10– Z3 – Z1– JA10
|
A091 = | Z1 – | FA10 – | Z3 – | Z1 – | JA10
|
A091 = | Z1 | FA10 | Z3 | Z1 | JA10
|
alg A091( ): Zh1( ); Fork(A10( )); Zh3( ); Zh1( ); Join_&(A10( ));
|
-
Многопоточная программная реализация алгоритма
-
Реализация компонент алгоритма
Далее представлена многопоточная программная реализация заданных фрагментов исходного параллельного алгоритма.
Язык программирования: Питон (Python)
|
РТА: Рабочий текст алгоритма |
ИТП: Исходный текст подпрограмм |
|
alg A30( ): Zh10( )
|
def A30(ccrt, hCycles): hCycles.za30 = 0 hCycles.Zh(ccrt.techsys.head10) hCycles.za30 = 1 |
|
alg A20( ): Zh2( ); Fork(A30( )); Zh4( ); Join_&(A30( ));
|
def A20(ccrt, hCycles): hCycles.za20 = 0 hCycles.Zh(ccrt.techsys.head2) thread.start_new(expSub.A30, (ccrt, hCycles, )) hCycles.Zh(ccrt.techsys.head4) while not hCycles.za30: time.sleep(0.1) hCycles.za20 = 1 |
|
alg A21( ): Zh5( ); Zh2( )
|
def A21(ccrt, hCycles): hCycles.za21 = 0 hCycles.Zh(ccrt.techsys.head5) hCycles.Zh(ccrt.techsys.head2) hCycles.za21 = 1 |
|
alg A10( ): Fork(A20( )); Zh5( ); Join_&(A20( )); Fork(A21( )); Zh6( ); Join_&(A21( ));
|
def A10(ccrt, hCycles): hCycles.za10 = 0 thread.start_new(expSub.A20, (ccrt, hCycles, )) hCycles.Zh(ccrt.techsys.head5) while not hCycles.za20: time.sleep(0.1) thread.start_new(expSub.A21, (ccrt, hCycles, )) hCycles.Zh(ccrt.techsys.head6) while not hCycles.za21: time.sleep(0.1) hCycles.za10 = 1 |
|
alg A091( ): Zh1( ); Fork(A10( )); Zh3( ); Zh1( ); Join_&(A10( ));
|
def eAxx1(ccrt, hCycles): hCycles.Zh(ccrt.techsys.head1) thread.start_new(expSub.A10, (ccrt, hCycles, )) hCycles.Zh(ccrt.techsys.head3) hCycles.Zh(ccrt.techsys.head1) while not hCycles.za10: time.sleep(0.1)
|
