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

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

РТА:

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

ИТП:

Исходный текст подпрограмм

alg40:

Zh5()

def A40(ccrt, hCycles):

hCycles.za40 = 0

# Переменная индикации окончания A40

hCycles.Zh(ccrt.techsys.head5)

hCycles.za40 = 1

# Индикация окончания процесса 40

alg A30():

Zh4()

Zh1()

def A30(ccrt, hCycles):

hCycles.za30 = 0

# Переменная индикации окончания 30

hCycles.Zh(ccrt.techsys.head4)

hCycles.Zh(ccrt.techsys.head1)

hCycles.za30 = 1

# Индикация окончания процесса A30

alg A20():

Zh3()

def A20(ccrt, hCycles):

hCycles.za20 = 0

# Переменная индикации окончания A20

hCycles.Zh(ccrt.techsys.head3)

hCycles.za20 = 1

# Индикация окончания процесса 20

alg A10():

Fork(A30( ))

zh7()

Fork(A20( ))

Zh8( )

Join_&(A20( ))

Join_&(A30( ))

Zh 0 ()

def A10(ccrt, hCycles):

hCycles.za10 = 0

# Переменная индикации окончания A10

thread.start_new(expSub.A30, (ccrt, hCycles, ))

hCycles.Zh(ccrt.techsys.head7)

thread.start_new(expSub.A20, (ccrt, hCycles, ))

hCycles.Zh(ccrt.techsys.head8)

while not hCycles.za20:

time.sleep(1)

while not hCycles.za30:

time.sleep(1)

hCycles.Zh(ccrt.techsys.head10) hCycles.za10 = 1

# Индикация окончания процесса A10

alg A991():

Fork(A10( ))

Fork(A40( ))

Zh2( )

Join_&(A40( ))

Zh2( )

Join_&(A10( ))

def eAxx1(ccrt, hCycles):

thread.start_new(expSub.A10, (ccrt, hCycles, ))

thread.start_new(expSub.A40, (ccrt, hCycles, ))

hCycles.Zh(ccrt.techsys.head2)

while not hCycles.za40:

time.sleep(1)

hCycles.Zh(ccrt.techsys.head2)

while not hCycles.za10:

time.sleep(1)

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

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

Первичное решение

def A40(ccrt, hCycles): # подпрограмма дополнительного потока

hCycles.za40 = 0 # Введение индикации окончания A40

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

hCycles.za40 = 1 # Окончание процесса A40

def A30(ccrt, hCycles): # подпрограмма дополнительного потока

hCycles.za30 = 0 # Введение индикации окончания A30

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

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

hCycles.za30 = 1 # Окончание процесса A30

def A20(ccrt, hCycles): # подпрограмма дополнительного потока

hCycles.za20 = 0 # Введение индикации окончания A20

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

hCycles.za20 = 1 # Окончание процесса A20

def A10(ccrt, hCycles): # подпрограмма дополнительного потока

hCycles.za10 = 0 # Введение индикации окончания A10

thread.start_new(expSub.A30, (ccrt, hCycles, )) # поток A30

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

thread.start_new(expSub.A20, (ccrt, hCycles, )) # поток A20

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

while not hCycles.za20: # Контроль окончания A200

time.sleep(1) # задержка в цикле ожидания

while not hCycles.za30: # Контроль окончания A30

time.sleep(1) # задержка в цикле ожидания

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

hCycles.za10 = 1 # Окончание процесса A10

def A10(ccrt, hCycles): # подпрограмма дополнительного потока

hCycles.za10 = 0 # Введение индикации окончания A10

thread.start_new(expSub.A40,(ccrt,hCycles, )) # поток A40

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

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

while not hCycles.za40: # Контроль окончания A40

time.sleep(0.1) # задержка в цикле ожидания

hCycles.za10 = 1 # Окончание процесса A10

def eAxx1(ccrt, hCycles): # alg A991() программа основного потока

thread.start_new(expSub.A10, (ccrt, hCycles, )) # поток A10

thread.start_new(expSub.A40, (ccrt, hCycles, )) # поток A40

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

while not hCycles.za40: # Контроль окончания A40

time.sleep(0.1) # задержка в цикле ожидания

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

while not hCycles.za10: # Контроль окончания A10

time.sleep(0.1) # задержка в цикле ожидания

8

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