2016-01-28 48 views
0

任何人都可以告诉我什么是计数信号量? 计算信号量的优势是什么? 你可以在c中写一个计数信号量的代码片段吗?计数信号量的优势

+0

你试过Google搜索“计数信号量”吗? – scottysmalls

+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

0

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

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

当信号量计数变为零,这表明没有更多的资源存在时,线程试图减小信号块等待直到计数变为大于零。

参考this link例如。