0
0 комментариев

Питон 3. ОС Линукс

Есть процесс, который создает ребенка. Задача ребенка получить от родителя 3 введенные строки и найти максимальную из них и передать обратно родителю. Реализовано с помощью очередей сообщений. Преподаватель сказал использовать мьютексы, для безошибочный работы кода. Но ребенок просто перестал выполнять свой код. Как быть?

from multiprocessing import Process, Queue
import os,threading
q = Queue()
mutex = threading.Lock()
 mutex.acquire()
 pid = os.fork()
if pid == 0:
 mutex.acquire()#block process
  a = q.get()
 Max = max(a, key = len)
 q.put(Max)
  mutex.release()
else:
 str1 = input()
 str2 = input()
 str3 = input()
  q.put([str1,str2,str3])
  print("Процесс родитель передал три строки:",[str1,str2,str3] )
 mutex.release()
  mutex.acquire()
 b = q.get()
  print("Процесс потомок вернул самую длинную строку:",b)
 mutex.release()

Asked question
Добавить комментарий