- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
// do A :: value_1 == value_2 -> // do B fi; 所以基本上我的理解是,-6ren">
谁能给我解释一下下面发生的事情的顺序?
if
:: a_channel??5 -> // do A
:: value_1 == value_2 -> // do B
fi;
所以基本上我的理解是,要使语句可执行,5 需要在 channel 中。我知道 5 将因此从 channel 中删除(如果它确实在 channel 中)。我不明白的是什么时候 5 会被删除。 5 是在语句执行后被移除还是在检查执行前被移除。
用于接收的 Promela 引用链接:http://spinroot.com/spin/Man/receive.html
最佳答案
假设 a_channel??5
包含在某个进程 P_i
的主体中。
Will 5 be removed after the statement is executed or will it be removed before during the check for execution.
“执行检查” 是从 channel 中删除 5
的必要条件,但不是充分条件。另一个必要条件是 P_i
被选中执行并执行语句 a_channel??5
。
更详细的答案。
声明 a_channel??5
声明它并不总是可执行。它可执行仅当 5
在 channel 中时。 (例如如果 5
在 channel 中,但它已被移除 [例如被其他人],a_channel??5
是不再可执行)
每次进程 P_i
执行一个原子(一组)指令后,调度程序可能会决定抢占它并允许其他进程P_j
带有一些可执行 指令以继续。
当进程P_i
到达不可执行 语句时,它总是立即被调度器抢占。在这种情况下,如果没有其他进程 P_j
有一些立即可执行指令可以安排执行(即著名的“无效结束状态”错误)。
如果语句 a_channel??5
是可执行的并且进程 P_i
被选择执行(或继续执行),则 a_channel??5
原子地 执行,并立即从 channel 中删除值5
的(第一次出现)。
关于model-checking - Promela channel "??"删除命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58464892/
我希望为多核处理器建模缓存,包括缓存一致性。这样的 PROMELA 实现是否已经存在。我试图搜索它,但找不到任何东西。其次,如果我必须自己实现它,在 PROMELA 中声明非常大的数组来表示缓存结构是
我正在尝试在 Promela 中创建一个 B 树,以便我可以证明有关它的内容,但是,Promela 似乎不支持递归数据类型。这不起作用: #define n 2 typedef BTreeNode {
在我的设计中,我有 电话 全局变量和一个方法,根据状态将一些提到的参数作为参数。 我可以通过引用将全局变量作为参数传递吗? This paper在结论部分明确说 "special form of ca
这会是死锁的一个例子吗? active proctype test(){ bool one; byte x; one; x = x+11; } 最佳答案 恕我直
byte x; if ::(x == 0) -> ... ::(x > 0) -> ... fi 全局变量有默认值吗?或者模型检查器检查所有可能的交错,也就是说,在这种情况下,使用 (x==0) 和
要在 C 中创建矩阵,我们需要编写: int[][] a = {{1,2,3},{1,2,3},{1,2,3}} 如何在 Promela 中创建矩阵? 最佳答案 来自docs : Multidimen
是否可以从另一个进程访问一个进程的局部变量的值。 例如在下面的程序中,我想从经理读取 my_id 的值。 proctype user (byte id){ byte my_id = id; }
我正在使用 SPIN 模型检查器 GUI - iSPIN。 GUI 附带了一个很好的自动机 View 生成器,但是为了查看完整的自动机,我需要放大/缩小。如果可能的话,我还想将该自动机保存在漂亮的图像
所以我想要的是进程 A 广播一条消息,告诉进程 B 到 D。如何才能做到这一点?正确的方法似乎是在 A 和进程 B 到 D 之间建立 channel ,然后将相同的消息发送到从 B 到 D 的每个进程
谁能给我解释一下下面发生的事情的顺序? if :: a_channel??5 -> // do A :: value_1 == value_2 -> // do B fi; 所以基本上我的理解是,
我有以下 promela 代码: chan level = [0] of {int}; proctype Sensor (chan levelChan) { int x; do
首先,我将总结我正在工作的项目,以便更容易理解问题(我不习惯用英语写作,对于我可能犯的错误感到抱歉)。 我一直在研究 Promela 模型,用于使用 LTL 条件为机器人在自然地形上进行路径规划。总之
我是尝试使用 Promela 和 SPIN 的初学者。在开发一些简单的 Promela 规范时,我想使用 printf() 检查程序中变量的值。我已阅读 this man page并且正在尝试运行一个
我正在尝试重现 Dijkstra 在题为“合作顺序进程”的论文中编写的 ALGOL 60 代码,该代码是解决互斥问题的第一次尝试,这里是语法: begin integer turn; turn:= 1
尝试在 Promela 中使用 Python 库并旋转 (error message screenshot) 时收到此错误消息: spin: /usr/include/unistd.h:778, Er
我有以下类型定义。 Pub 类型保留两个 int,pub_table 保留一个发布者数组和一个 int。 typedef pub{ int nodeid; int tid }; typ
我是一名优秀的程序员,十分优秀!