#define FALSE 0
#define TRUE 1
#define N 2
int turn;
int interested[N];
void enter_region(int process) {
int other;
other = 1 - process;
interested[process] == TRUE;
turn = process; // set flag
while (turn == process && interested[other] == TRUE)
}
void leave_region(int process) { interested[process] = FALSE; }
如果在进程0执行语句后发出时钟中断,不会违反关键区域的第三个标准
interested[process]==TRUE;
因为进程一会在while循环中等待整个处理器时间被处理器0阻塞。
Perterson的解决方案或algoruthm是一种着名的互斥编程算法,允许两个进程共享一次性资源而不会发生冲突,只使用共享内存进行通信。
我所指的标准是:在关键区域之外运行的流程不会阻止任何流程。
答案 0 :(得分:2)
要进入关键部分的进程必须被尚未完全释放的进程阻止。这是互斥算法的明确目的。
第三个标准是在关键部分之外运行的进程不会阻止其他进程。流程1不会阻止其他流程,只能由尚未发布关键部分的流程阻止。所以第三个标准没有被违反。
如果您仍然不同意,请解释流程1如何阻止其他流程,或解释流程1如何被其关键部分之外的流程阻止。