gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:31 24 4
gpt4 key购买 nike

我正在使用 System V 信号量,并且希望在进程启动时阻止该进程,并等待另一个进程在完成其关键部分后启动特定信号量。
我认为 sem_op = 0 将是正确的操作。

所以我用 1 初始化信号量。
然后在需要阻止的进程 A 中,我使用 sem_op = 0 来等待信号量变为 0。在进程 B 中,我使用 sem_op = -1。 (所以这使得 semaphore.val = 0)。

当另一个进程成功关闭信号量时,应该被阻止的进程会在标准输出上打印。

等待零功能实际上有什么作用以及如何正确使用它?

感谢您的宝贵时间!

最佳答案

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

关于linux - 等待零信号量操作的确切功能是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13670003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com