do { flag[i]=true; turn=j; while(flag[j]&&turn==j); //临界区 假设i在临界区(flag[i]==true&&turn==j),这时候j已经等待了(flag[j]==true&&turn==i) flag[i]=false; //剩余区 } while(1); i的: do { turn=j; while(turn==j); //临界区 }
//当i运行到while时,等待j运行完,当j运行完一个循环之后turn=i,这时候i就可以开始运行j的:while(1);
do
{
turn=i;
while(turn==i);
//临界区
}
while(1);
临界区域问题【2】
最新推荐文章于 2021-08-11 00:38:30 发布