2

クリティカル セクションのスレッドを同期しようとしていますが、値に基づいて同期する必要があります。たとえば、異なる人物 (つまり、bob、fred、bill) を表す作業を行うスレッドがある場合、Bob と Bill のスレッドは同時に実行できますが、Bob のスレッドはすべて同期されるため、一度に 1 つだけがクリティカル セクションを通過できます。時間。私の最初の考えは、名前付きミューテックスを使用することですが、それらを管理する方法がわかりません。おそらく、名前付きミューテックスの辞書のようなものでしょう。誰かが似たようなことをしましたか?

4

2 に答える 2

4

通常、このようなシナリオでは、Userユーザーごとに 1 つのインスタンスがあります。

その場合は、lock()そのユーザー インスタンスでのみ実行できます。

于 2012-08-17T15:47:45.127 に答える
1
  • Person人 (Bob、Bill など) を表すクラスがある場合はlock、そのインスタンスを使用できます。
  • を表すクラスがない場合は、人々の一意の識別子を名前付きオブジェクトのインスタンスにマップPersonする を作成します。ディクショナリ自体へのアクセスは同期する必要があります。また、.NET でのミューテックスの作成は簡単ではないことに注意してください。詳細については、この回答を参照してください。DictionaryMutex
于 2012-08-17T15:51:20.453 に答える