首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待零信号量操作的确切功能是什么?

等待零信号量操作的确切功能是什么?
EN

Stack Overflow用户
提问于 2012-12-02 22:04:25
回答 1查看 782关注 0票数 0

我正在使用System V信号量,并希望在进程开始时阻塞它,并等待另一个进程在它完成其临界区之后启动特定的信号量。

我认为sem_op = 0将是正确的操作。

所以我将信号量初始化为1。

然后在进程A,这需要被阻塞,我使用sem_op = 0,以便等待信号量变为0。在进程B中,我使用sem_op = -1。(因此,这使得semaphore.val = 0)。

当另一个进程成功地关闭信号量时,应该被阻塞的进程在stdout打印。

wait for zero功能的实际用途是什么?我如何正确使用它?

谢谢您抽时间见我!

EN

回答 1

Stack Overflow用户

发布于 2012-12-02 22:44:41

根据手册,semop =0是“等待0”操作。所以你的算法应该是有效的。然而,最好使用传统的P和V运算符来解决这些问题,其中P表示semop = -1,V表示semop = +1。因此,如果信号量的初始值为0,则进程A应该执行P运算并阻塞。进程B应该完成其关键部分并执行V操作。一旦进程B执行V操作,进程A的P操作就会完成,它可以继续前进。

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

https://stackoverflow.com/questions/13670003

复制
相关文章

相似问题

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