短路和交错:如果已检查的语句发生更改怎么办

Short Circuiting && interleaving: what if the statement already checked changes

提问人:Dgrm 提问时间:12/12/2022 更新时间:12/12/2022 访问量:12

问:

我有一个关于语句和短路与无短路的处理的问题(我不知道无短路的确切名称)。

方案如下。 想象一下,我有两个语句 pq,它们按以下方式计算:

if ( p && q ) then ....

棘手的是,语句 q 是一个阻塞语句,阻塞直到 true 或 false。

想象一下以下情况:p 为 true,然后程序在 q 中阻塞。然后,当 q 被释放并返回 true 时,p 不再为 true(例如,由于交错)。

我的问题是,如果存在短路,则如何处理此情况。我猜短路它不会再次检查 p。但是,如果没有短路,它应该在进入 if 子句之前同时检查两个语句是否为真,不是吗?在哪些情况下会发生这种情况?

逻辑算子 短路 交错

评论


答: 暂无答案