0

これが架空のシナリオです(これは宿題ではありません):

何人かの人々はテーブルと流しのある台所にいます。それらはすべて同時に食べることができます。ただし、一度にシンクを使用できるのは1人だけであり、誰かがシンクを使用しているときはいつでも、誰も食事をすることはできません。

どの同期プリミティブが必要で、どのように設定する必要がありますか?これにセマフォが必要な場合(たとえば、.NETのセマフォhttp://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx)、これを実現するためにどのように構成して使用しますか?

4

2 に答える 2

4

これは典型的なリーダーとライターの問題です。リーダーは同時に読むことができ(ライターが書いていないと仮定)、いつでも1人のライターだけが書くことができ、誰かが書いているときに体が読むことはありません。

リーダー-ライターの問題

于 2013-02-27T21:11:57.180 に答える
2

zzk が言うように、これは複数のリーダー/単一のライターのシナリオであり、.NET では通常、リソースへのアクセスを同期するためにReaderWriterLockSlimタイプのロックを使用します。

于 2013-02-27T21:15:15.410 に答える