有3个进程同时执行 X()
和 Y()
重复执行 .
要求:
-
只有最多2个进程可以执行
Y()
,也就是说,当它看到另外两个进程正在执行Y()
函数时,最后一个进程应跳过Y()
函数 . -
当前不允许执行
Y()
的进程仍应执行X()
函数 . -
X()
可以同时由所有3个进程执行
这是我的伪代码,使用信号量的传统P和V操作定义,其中ProcA ProcB和ProcC是 concurrent
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()
,但它会阻止最后一个进程在等待再次使用 Y()
时执行 X()
. 我只是想让它跳过 Y()
并在此过程中仍然执行 X()
.