5

.NET 2.0 の ReaderWriterLock と .NET 3.5 の ReaderWriterLockSlim を見てきましたが、スリム バージョンではロックにカーネル オブジェクトを使用していません。大量の (しかし巨大ではない) 量のオブジェクトを生成する可能性がある私のコンテキストでは、これは良いように思えます。

しかし、私が書いたコードは、移行期間中に .NET 2.0 と 3.5 の両方で使用する必要があるため、3.5 バージョンは私の目的には適しているように見えますが、使用できません。

.NET 2.0 にプラグインして同じ利点を得ることができる同様のクラスを持っている、または知っている人はいますか?

4

4 に答える 4

5

私の知る限り、Microsoft からのものはありません (そうでなければ、やや無意味です)。また、長い時間をかけて考え、実装し、テストしてきた優れたReaderWriterLockSlim頭脳を持っていると信頼できるサード パーティ以外のサード パーティからのものを見つけた場合は、 、私はそれを信用しません。たとえば、CodeProject のランダムな実装など、私は確かに信用しません。

ReaderWriterLockSlim.NET 2.0 を使用する方がはるかに優れているため、.NET 2.0 の代替品を探す価値があると示唆する具体的な方法はありますか? 確かに「あると便利」ですが、非常に重要なケースは比較的まれだと思います。ロックがボトルネックであることをすでに知っていない限り、私はあなたが持っているものに固執し、可能なときにアップグレードする準備ができている.

ただし、通常のモニターだけを使用してみることをお勧めしますReaderWriterLock。多くの場合、RWL のオーバーヘッドが利点を上回ります。

もちろん、それはすべてケースバイケースです。あなたのアプリは、ReaderWriterLockSlim...

于 2008-11-13T08:27:29.713 に答える
1

ハード ロックなし ReadWriteLocker - このクラスは、ReaderWriterLock よりも 20% ~ 30% 高速な ReaderWriterLock Alternative から設計されています。

私が行った違いは次のとおりです。

  1. 読み取りロック内に書き込みロックをネストすることにより、アップグレード ロックをサポートします。ReaderWriterLock とは異なり、アップグレード ロックはスレッド セーフです。
  2. スレッド セーフなコレクションを設計する方法を示すサンプル コレクションがあります。.NET 4.0 の PFX コレクションほど効率的ではありませんが、他にも利点があります。
  3. 開始されたすべてのロックがアンロックされている場合、デッドロックできません。また、他のすべてのロック メカニズムは、このロッカーに対して相互に排他的に実行されます。
  4. デッドロックが発生しないことを確認したら、デッドロックを検出し、デッドロック検出のオーバーヘッドをオフにする機能。
  5. 再帰性が高く、ReaderWriterLock や ReaderWriterLockSlim よりも何倍も堅牢です。

私はそれに多くの作業を費やしてきましたが、それが役立つことを願っています。これは現時点では非常に新しいものであり、他のロック メカニズムに関するテストが必要になります。そしてもちろん、すべてが .NET 2.0 準拠です。

于 2010-09-25T18:56:47.230 に答える
0

使用の欠点について質問しましたが、のReaderWriterLock代替手段を含む興味深いリンクがいくつかありますReaderWriterLock私の質問への答えを見てください。

于 2011-04-12T04:36:59.590 に答える