我们在哪里真的需要一套System v信号量?

时间:2011-02-20 12:41:14

标签: unix operating-system semaphore sysv

每次我阅读semget: The semget() system call returns the semaphore set identifier associated with the argument key.的描述时,我都想知道我们在哪里需要一套System V信号量。

我总是将nsems参数设为1,因为大多数时候我需要一个信号量。即使我不需要二进制信号量,为什么我要创建一组5-6个信号量(比方说)。

如果进程创建一组与单个键关联的6个信号量,而另一个尝试对同一个键执行semget,只需要3个信号量,该怎么办?也不是所有那6个信号量6个单独的二进制信号量。我口渴并且在2个月内寻找这个问题的答案(当然不是连续的)。

我很抱歉,如果这个问题似乎是最愚蠢的问题,但除非我得到一组真正使用这组信号量的例子,否则这个疑问仍将留在我的脑海中。我试图搜索一个示例C代码,其中有人使用一组信号量,但我找不到一个。

如果你能帮我解决这个问题,我真的非常感谢你们。提前感谢一吨。

2 个答案:

答案 0 :(得分:2)

我在DBMS上工作,该DBMS使用一个信号量用于处理相同数据的一组协作进程中的每一个,通过共享内存进行协作。必须一次分配这一个将是一个麻烦;信号量设置为20(或其他)信号量非常方便。

答案 1 :(得分:0)

我知道信号量最常见的情况是当一个或多个处理线程正在处理数据队列时。每个线程将减少从队列中删除的每个条目的信号量,并且当新数据放入队列时,信号量将递增。然后你需要做的就是等待信号量,而不是不断地轮询更新。

相关问题