2013-02-27 62 views
0

这里有一个假设的情况(这不是功课):我需要什么同步原语?

几个人在一张桌子和一个水槽的厨房。他们都可以同时进食。但是,一次只能使用一个接收器,并且每当有人使用接收器时,都无法进食。

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

回答

4

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

Reader-writer problem

+0

+1 @zzk - 你打我吧!另请参阅http://msdn.microsoft.com/zh-CN/library/system.threading.readerwriterlockslim.aspx – 2013-02-27 21:14:15

2

由于ZZK说,这是一个多读/单写方案,并在.NET你通常会使用ReaderWriterLockSlim类型的锁,用于同步对资源的访问