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

Промежуточные Питон-подобные формы записи алгоритма

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

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

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

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( ));

      1. Многопоточная программная реализация алгоритма

          1. Реализация компонент алгоритма

Далее представлена многопоточная программная реализация заданных фрагментов исходного параллельного алгоритма.

Язык программирования: Питон (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)

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