首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spin/Promela时超时

使用Spin/Promela时超时
EN

Stack Overflow用户
提问于 2013-03-19 10:50:27
回答 1查看 1.9K关注 0票数 0

如果有人能用下面的代码向我解释为什么我会超时,那就太好了。我理解,或者至少我认为我理解超时的想法,但对于do循环,我认为这将阻止这一点。任何建议都是值得感谢的。

代码语言:javascript
复制
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
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-19 14:54:03

当您执行旋转验证并出现问题时,例如“超时”,您就得到了所谓的“跟踪”文件。跟踪文件显示了导致问题的整个程序执行的确切路径。

假设上面的文件名为test.pml。您可以执行以下操作:

代码语言:javascript
复制
$ spin -a test.pml
$ gcc -o pan pan.c
$ ./pan
# info about verification, shows timeout
# view the detailed trail file
$ spin -p -t test.pml

然后,查看打印出来的详细信息,找出超时是如何发生的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15490691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档