Если кто-то может объяснить мне, почему я получаю таймаут со следующим кодом, который был бы замечательным. Я понимаю, или, по крайней мере, я думаю, что я делаю, идея тайм-аута, но с петлями дела я думал, что это остановит это. Любые советы приветствуются.Тайм-аут при использовании 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
}
спасибо. Я новичок в этом, и я попытался получить это со спинкрут-сайта, но я явно делал что-то неправильно. Еще раз спасибо. – mcdowesj