Person算法解决临界区互斥问题,turn变量可以改吗?

P0进程:
flag[0]=TRUE; turn=1;
while(flag[1]&&turn==1);
访问临界资源;
flag[0]=false;
P1进程:
flag[1]=TRUE; turn=0;
while(flag[0]&&turn==0);
访问临界资源;
flag[1]=false;

我的理解是这个turn起到了轮流的作用,只有当两个进程中一个进程有访问临界资源的意愿并且轮到它了,另一个进程才把资源让给它,那能将P0进程中的turn设置为0,P1进程中的turn设置为1吗?turn的赋值能放在flag赋值的前面吗?手动模拟感觉是可以的,但是不知道实际上可不可以

你说的这些都是对称的,只要都在while上面应该就可以。
这个东西没有好的办法证明,唯一的方法就是将所有的情况列出来一一分析。