计数信号量的优点

时间:2016-01-28 10:35:13

标签: semaphore

谁能告诉我什么是信号量? 计算信号量有什么好处? 你能为c中的计数信号量编写一个代码片段吗?

2 个答案:

答案 0 :(得分:0)

如果您有N个可用资源,计数信号量可以跟踪  剩余资源数量。当任何线程访问信号量的信号量计数器之一时  将减少1,当线程释放信号量时,计数器将增加1。  如果计数器达到零并且线程请求资源,则线程将被阻止  直到另一个线程释放信号量。  信号量的一个众所周知的应用是生产者 - 消费者。  您可以在此处找到有关生产者消费者问题的详细说明:https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem  它还包括您寻找的简单代码。

还可以初始化信号量以限制它控制的最大资源数量。  如果我们将其限制为1,则称为二进制信号量,它只有两个状态sema = 1或sema = 0  二进制和计数信号量在这里进行比较:  Differnce between Counting and Binary Semaphores

答案 1 :(得分:0)

计数信号量与条件变量(与互斥量一起使用)一样强大。在许多情况下,当使用计数信号量而不是条件变量实现时,代码可能更简单(如下面的几个示例所示)。

从概念上讲,信号量是非负整数计数。信号量通常用于协调对资源的访问,信号量计数初始化为可用资源的数量。然后,线程会在添加资源时以原子方式递增计数,并在删除资源时以原子方式递减计数。

当信号量计数变为零时,表示不再存在资源,尝试递减信号量块的线程会等到计数大于零。

例如,请参阅this link