2013-02-27 43 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類型的鎖,用於同步對資源的訪問