有 3个进程正在同时运行 并执行X()
和Y()
重复。
要求:
最多只有 2个进程可以执行Y()
,也就是说,如果最后一个进程看到 other个,则应该跳过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()
并在过程中 still 执行X()
。