int number;
enter_region(number);
这里是临界区的操作;
leave_region();
当进程 0 执行了 enter_region(0);,但还没有执行 leave_region 时。此时进程 1 去执行 enter_region(1);,会发现:
turn == process
成立了(我理解,这代表当前进程正在请求)turn == process&&interested[other] == True
的第一个条件,直接短路,然后不执行这个循环,然后进程 0 进入到 临界区。turn == process
不成立,就直接短路,然后就让当前进程去临界区了呢(虽然确实是正常工作了,这之后,进程 0 进入临界区,进程 1 则无限循环了)?总感觉有点反直觉,不知道该怎么解释turn == process
成立,但interested[other] == True
不成立。这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.