boolen blocked[2]; int turn; void P(int id) { while (true){ blocked[id] = true; while(true != id){ while(blocked[1-id]) /*不做任何事*/ turn = id; } /* 临界区 */ blocked[id] = false; /* 其余部分*/ } } void main() { blocked[0] = false; blocked[1] = false; turn =0; parbegin(P(0), P(1)); }
这是 [HYMA66] 中提出的解决互斥问题的一种软件方法。请举出证明该方法不正确的一个反例。有趣的是,《 ACM通讯 》都被它蒙蔽了。