关键部分:多个读者,单个作家

时间:2011-06-29 09:22:05

标签: mutex

我想有以下方案:

一个互斥结构。

只有当没有其他线程时,作者才能进入临界区。

只有当前其他线程也有读者时,读者才能进入关键部分。

我不确定如何使用critical_sections实现这一点(因为我不希望读者互相关联 排斥)

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用信号量。

  • 一个互斥锁如果出现一个异常锁定 作家在批评之内 部分。
  • 为读者提供最大读者数量的信号量。

您可以检查大多数信号量结构有多少可用许可证以及何时......最大许可证数量等于您知道关键部分内没有读取器的可用许可证数量。

一些伪代码

作家

# Take Writer-Mutex(blocking)
    # Check until the maximum amount of Semaphore Permits == Max Amount
           #loop
    #
    # critical section
# Release Mutex

阅读器

 # Take Writer-Mutex(blocking)
 # Take Semaphore Permit
 # Release Writer-Mutex
 # Critical Section
 # Release Semaphore Permit