0

これはこの質問から派生したものですが、いくつかの制約が削除されています。

ファイルのロックを管理する必要があるシステムがあります。あるスレッドでファイルをロック (共有読み取りロック) してから、別のスレッドでロックを解除できる必要があります。より正確には、どのスレッドでロックが解除されるか、または作成中のスレッドがまだ存在するかどうかさえわかりません。

これに合わせて排他的な書き込みロックも必要になりますが、それはすべて同じスレッドになります。

.NET Mutexは、作成中のスレッドが終了するときに余分な処理を行うため、機能しません。

4

3 に答える 3

1

あなたがリンクした質問はプロセスの境界を越えることですが、私が読んだことから、あなたはスレッドを越えているだけです...これを念頭に置いて、JeffRichterのReaderWriterGateクラスはあなたの問題にうまく適合すると思います。これにより、共有リソースへのアクセスを制御し、リソースへのアクセス要求をキューに入れることができます。スレッドアフィニティがないように見えるので、プロセスの境界を越えていない場合は、解決策になる可能性があります。

クラスに関する記事へのリンクは次のとおりです... 同時発生およびPowerThreadingライブラリはここからダウンロードできます

ケースが本当に単純な場合(あるスレッドからのロックと別のスレッドからの解放を除く)、.NETに組み込まれているReaderWriterLockを使用できなかった理由がわかりません(ただし、PowerThreadingライブラリにあるものは多くのはずです)もっと早く)。Monitorクラスにはスレッドアフィニティがなく、どのコンテキストからでもアクセスできるため、使用方法によっては、これが最も簡単なソリューションになる場合があります。

于 2009-05-06T04:15:25.043 に答える
1

カウントが 1の (名前付きの)セマフォでしょうか? WaitOneロックする、ロックReleaseを解除する?

于 2009-05-05T23:09:56.120 に答える
0

ターンスタイルの問題のように思えます。ファイルをロックする最初のリーダーと、ファイルのロックを解除する最後のリーダーを管理する必要があります。これを実装するには、セマフォを使用できます。作家が待っている間、回転式改札口で読者を拒否することで、作家を優先することができます。

于 2009-05-05T23:49:26.367 に答える