【问题标题】:What is the exact functionality of wait for zero semaphores operation?等待零信号量操作的确切功能是什么?
【发布时间】:2023-03-16 12:09:01
【问题描述】:

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

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

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

等待归零功能的实际作用是什么?如何正确使用它?

感谢您的宝贵时间!

【问题讨论】:

    标签: linux process semaphore


    【解决方案1】:

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

    【讨论】:

    • 我已经设法通过上下动作来做到这一点,但我想测试并弄清楚何时何地需要等待零操作。我想我找到了一个例子。
    猜你喜欢
    • 2013-01-09
    • 2015-06-21
    • 2017-09-13
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多