Есть 3 процесса , работающих одновременно , выполняющих X()
и Y()
несколько раз .
Требования:
Только самое большее 2 процесс может выполнить Y()
, то есть последний процесс должен пропустить функцию Y()
когда он видит, что два других процесса выполняют Y()
функцию.
Процесс в настоящее время не может выполняться Y()
все еще должен выполнять свою функцию X()
.
X()
может выполняться всеми тремя процессами одновременно
Вот мой псевдокод, использующий традиционную P и V операцию определения семафоров, где ProcA ProcB и ProcC являются одновременными
SEMVAR = 2 # Only at most 2 process may execute Y()
def ProcB():
while True: # X() and Y() executes repeatedly
X()
P(SEMVAR)
Y()
V(SEMVAR)
def ProcC():
while True:
X()
P(SEMVAR)
Y()
V(SEMVAR)
def ProcA():
while True:
X()
P(SEMVAR)
Y()
V(SEMVAR)
Хотя этот код позволяет максимум 2 процессам выполнять Y()
, он предотвращает последний процесс от выполнения X()
, пока он ожидает повторного использования Y()
.Я просто хочу пропустить Y()
и все еще выполнить X()
в процессе.