- •Млта: математическая логика и теория алгоритмов
- •Описание алгоритма
- •Исходный текст программной реализации
- •Алгоритм a101: Единичный алгоритм
- •Описание алгоритма
- •Исходный текст программной реализации
- •Алгоритм a211: Последовательность двух команд
- •Описание алгоритма
- •Исходный текст программной реализации
- •Алгоритм a222: Параллельная конъюнкция двух команд
- •Исходное общее описание алгоритма
- •Многопоточные представления
- •Исходный текст программной реализации
- •Алгоритм a323: Параллельная конъюнкции трех команд
- •Исходное общее описание алгоритма
- •Многопоточные представления
- •Исходный текст программной реализации
Исходный текст программной реализации
ВИ: Вертикальное исполнение
Первичное решение
defeA323(ccrt,hCycles): //algA323():
thread.start_new(hCycles.Zh, (ccrt.techsys.head4, )) // Fork(Zh2())
thread.start_new(hCycles.Zh, (ccrt.techsys.head9, )) // Fork(Zh1())
hCycles.Zh(ccrt.techsys.head1) // Zh1()
while not ccrt.techsys.head9.yzh: // Join(Zh1()): ожидание (head9.yzh = 1)
pass // пустой оператор тела цикла
while not ccrt.techsys.head4.yzh: // Join(Zh2()): ожидание (head4.yzh = 1)
pass // пустой оператор тела цикла
Модификация:
введение оператора задержки в циклы ожидания завершения параллельной конъюнкции – для разгрузки процессора.
def eA323(ccrt, hCycles): // alg A323():
thread.start_new(hCycles.Zh, (ccrt.techsys.head4, )) // Fork(Zh1())
thread.start_new(hCycles.Zh, (ccrt.techsys.head9, )) // Fork(Zh3())
hCycles.Zh(ccrt.techsys.head7) // Zh7()
while not ccrt.techsys.head9.yzh: // Join(Zh1(): ожидание (head9.yzh = 1)
time.sleep(0.1) // задержка для разгрузки процессора
while not ccrt.techsys.head4.yzh: // Join(Zh2(): ожидание (head4.yzh = 1)
time.sleep(0.1) // задержка для разгрузки процессора