2009-10-25 73 views
0

我们正在讲述我正在使用的一个类中的多线程编程。教授提出了一个额外的问题,我一直试图找出结果:单个信号量的多进程同步

每个进程P0,P1,P2和P3必须等待其他三个进入或到达一个特定的同步点他们的代码,然后才可能跨越自己的同步点。

我已经知道如何有四个信号灯回答这个问题,最困难的部分是只有一个信号量做。

任何建议或提示如何进行呢?

+0

你的问题的措辞是一种不精确的,所以你不可能得到很好的指导。 – 2009-10-26 00:15:35

回答

0

在-4只是初始化信号,如果它不是一个二进制。

+0

好的投票的解释? – attwad 2009-10-26 04:17:59

+0

我没有投票,但我怀疑这是因为你不能用负值初始化信号量。在POSIX中,该值是未签名的,Windows文档特别声明值为0或更大。 – Duck 2009-10-26 05:13:58

+0

这是相当有限的:我经常需要一个反向信号量,我永远不会找到一个。虽然由于软件限制不可能,但他的回答完全合乎逻辑。虽然有点解释会受到欢迎。 – 2009-10-26 06:37:07

0

你在强加给您的解决方案的约束有点轻,但看到The Little Book of Semaphores并通过障碍的章节阅读。这应该给你一些想法。

+0

谢谢你的资源,这应该是相当有帮助的。 – KidDaedalus 2009-10-27 04:40:09

0

原来教授所想说的是,你可以使用,而不是一二信号灯。他认为,正如我在考虑过这个问题一段时间后所做的那样,单个信号量是不可能做到的。

+0

这就是为什么我评论你没有提到太多约束。你可以用一个信号量和互斥体来保护一个计数器,但我不确定你是否可以使用互斥体,或者它们是否会算作第二个信号量。 – Duck 2009-10-27 05:26:29