0
누군가 다음과 같은 코드를 사용하여 시간 제한을받는 이유를 설명 할 수 있다면 좋습니다. 나는 적어도 타임 아웃에 대한 생각을 이해한다고 생각하지만, do 루프를 사용하면 이것을 막을 수 있다고 생각했다. 모든 조언을 부탁드립니다. 당신이 SPIN 검증을 수행하고 문제가 이러한 '타임 아웃'으로, 발생하는 경우Spin/Promela를 사용할 때 시간 초과가 발생했습니다.
mtype wantp = false;
mtype wantq = false;
mtype turn = 1;
active proctype p()
{
do
:: printf ("non critical section for p\n");
wantp = true;
(wantq ==true);
if
:: (turn == 2)->
wantp = false;
/* wait for turn ==1*/
(turn ==1);
wantp = true;
fi;
printf("CRITICAL SECTION for P\n");
turn = 2;
wantp = false;
od
}
active proctype q()
{
do
:: printf("non critical section for q\n");
wantq = true;
(wantp ==true);
if
:: (turn == 1)->
wantq = false;
(turn ==2);
wantq = true;
fi;
printf("CRITICAL SECTION for Q\n");
turn = 1;
wantq = false;
od
}
감사합니다. 나는 이것에 익숙하지 않고 spinroot 사이트에서 이것을 얻으려고했지만 분명히 잘못된 것을하고있었습니다. 다시 한번 감사드립니다. – mcdowesj