我试图了解计数信号量的应用。我可以看到,通常情况下,线程中存在竞争条件。为避免此类问题,我们使用互斥。我们总是只需要一个线程来读取公共资源,其他线程应该被阻塞。这样,我们序列化了公共资源的访问权限。但是,我无法理解,我可以使用计数信号量的情况应该是什么?请给我一个很好的用例。
答案 0 :(得分:1)
在一般情况下,你有T个线程访问R资源,其中T> 1。 R.您使用初始化为R的计数信号量来授予线程对资源的访问权限。一个例子是多处理器图形子系统,其中R是处理器的数量。
请注意,计数信号量有两个目的。计数表示可用资源的数量。原子减量操作返回的值是获取资源的索引或标记。
答案 1 :(得分:1)
计算信号量的最常见用途是分配具有多个但有限可用性的资源,如stark所述。
它们也可用于构建障碍和读取器/写入器锁之类的东西。在障碍中,您希望N个线程中的每个线程在任何可以继续之前到达某个点。例如,赛马的开始。使用r / w锁定,您有多个读者和一个写入者。您可以看到计数信号量如何有助于创建这些信号量。