8

の静的メンバーを使用してバッファー マネージャーを作成しますBufferManager.CreateBufferManager。この新しく作成されBufferManagerたものは、複数のスレッドによって使用されます。

lockwithを使用する必要がありますかTakeBuffer()ReturnBuffer()またはそれは設計上スレッドセーフですか?

4

2 に答える 2

4

同時実行制御の形式を使用しないインスタンスを内部的BufferManager.CreateBufferManagerに返しますが、新しいバッファを ing するときに内部ロックを使用する複数のインスタンスをラップします。したがって、 の単純さから判断すると、ユーザー側のロックは冗長であると想定しても安全であり、返されるクラスは実際にはスレッド セーフです。WrappingBufferManagerSynchronizedPool<T>Take()WrappingBufferManager

于 2011-08-04T20:11:01.423 に答える
0

BufferManager でスレッドの問題が発生しました。WCF でカスタム メッセージ エンコーダーを作成しましたが、私の観察によると、呼び出しごとにバッファー マネージャーが作成されるとは限りません。したがって、バイトが他のスレッドによって再利用/返されているため、データが破損しています。

だから、あなたの質問に答えるために... いいえ、そうではありません同じインスタンスを再利用しているため、スレッドセーフであるとは限りません。

于 2014-04-02T07:49:54.610 に答える