【发布时间】:2011-06-30 17:39:22
【问题描述】:
每次我阅读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 代码,其中有人正在使用一组信号量,但我找不到。
如果你们能帮我解决这个问题,我会非常感谢你们。提前致谢。
【问题讨论】:
-
如果我有一个程序需要 5 个信号量来保护 5 个资源,这样我就可以使用一个键和一个信号量 ID 来访问它们。但是在这种情况下,如果我也有一个子进程并且它确实 semget 并要求这 5 个信号量中的 3 个,会发生什么。我现在就去试试。
标签: unix operating-system semaphore sysv