【问题标题】:What synchronization primitive do I need?我需要什么同步原语?
【发布时间】:2013-02-27 21:08:42
【问题描述】:

这是一个假设场景(这不是家庭作业):

几个人在一个带桌子和水槽的厨房里。他们都可以同时吃饭。但是,一次只能有一个人在使用水槽,而且每当有人使用水槽时,就没有人可以吃饭了。

需要什么同步原语以及如何设置它?如果这需要一个信号量(例如,一个 .NET 信号量 http://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx ),如何配置和使用它来实现这一点?

【问题讨论】:

    标签: .net multithreading synchronization


    【解决方案1】:

    这是典型的读写器问题。读者可以同时阅读(假设没有作者在写),并且任何时候只有一个作者可以写,当有人在写的时候没有正文阅读。

    Reader-writer problem.

    【讨论】:

    【解决方案2】:

    正如 zzk 所说,这是一个多读/单写场景,在 .NET 上,您通常会使用 ReaderWriterLockSlim 类型的锁来同步对资源的访问

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多