首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用信号量的条件同步

问使用信号量的条件同步
EN

Stack Overflow用户
提问于 2015-05-12 16:16:18
回答 2查看 558关注 0票数 0

我有这个例子,我想看看这些语句的运行顺序。我想应该是,X,A,B,Y。

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

​

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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-信号量的保证)的任何顺序。

票数 2
EN

Stack Overflow用户

发布于 2015-05-12 16:31:29

关于陈述的顺序,你几乎没有什么可说的。你有X/ wait / Y的顺序,你有A/ signal / B的顺序,你有命令信号/ Y,仅此而已。如果你对仅仅是工具的等待/信号不感兴趣,那么Y会在A之后执行,这就是你所知道的。

P2可以在执行P1的第一条语句之前完全运行到它的末尾。

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

https://stackoverflow.com/questions/30196364

复制
相关文章

相似问题

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