这是一个假设的场景(这不是作业):
有几个人在厨房里摆着一张桌子和一个水槽。他们都可以同时进食。但是,一次只能有一个人使用水槽,每当有人使用水槽时,没有人可以吃。
需要什么同步原语以及如何设置?如果这需要一个信号量(比如,一个.NET http://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx),那么如何配置和使用它来实现这个目的?
答案 0 :(得分:4)
这是典型的读写器问题。读者可以同时阅读(假设没有作者正在写作),只有一位作家可以随时写作,而且当有人写作时,没有人读。
答案 1 :(得分:2)
正如zzk所说,这是一个多读者/单一作家场景,在.NET上你通常会使用ReaderWriterLockSlim类型的锁来同步对资源的访问