我有这个例子,我想看看这些语句的运行顺序。我想应该是,X,A,B,Y。
我说得对吗。我的逻辑是,语句X首先与A并行运行,但是当我们到达信号量时,它仍然是0,因此我们允许语句B由于信号而运行,因为这会增加值。现在我们终于可以运行Y了?

发布于 2015-05-12 16:30:40
因为进程是并行运行的,所以不能确定X和A的顺序--我们可以表示为(X \\ A) --这意味着其中的任何一个都被执行了。
现在,对于信号量:由于进程是并行的,动作的顺序再次是(等待(consyn) _\吗?_
如果先执行等待(consyn),然后执行信号(consyn),则生成的场景是(X _ A) (Y _(Y_ B) ),P1和P2结束。如果顺序颠倒,信号量实现使用信号来增加其值并等待递减,则结果再次为(X _ A) (Y _ B),P1和P2结束。
此外,线程执行的顺序不一定是完全并行的,因此结果可以是(X,Y),(A,B)和(A,Y-信号量的保证)的任何顺序。
发布于 2015-05-12 16:31:29
关于陈述的顺序,你几乎没有什么可说的。你有X/ wait / Y的顺序,你有A/ signal / B的顺序,你有命令信号/ Y,仅此而已。如果你对仅仅是工具的等待/信号不感兴趣,那么Y会在A之后执行,这就是你所知道的。
P2可以在执行P1的第一条语句之前完全运行到它的末尾。
https://stackoverflow.com/questions/30196364
复制相似问题