の静的メンバーを使用してバッファー マネージャーを作成しますBufferManager.CreateBufferManager。この新しく作成されBufferManagerたものは、複数のスレッドによって使用されます。
lockwithを使用する必要がありますかTakeBuffer()、ReturnBuffer()またはそれは設計上スレッドセーフですか?
の静的メンバーを使用してバッファー マネージャーを作成しますBufferManager.CreateBufferManager。この新しく作成されBufferManagerたものは、複数のスレッドによって使用されます。
lockwithを使用する必要がありますかTakeBuffer()、ReturnBuffer()またはそれは設計上スレッドセーフですか?
同時実行制御の形式を使用しないインスタンスを内部的BufferManager.CreateBufferManagerに返しますが、新しいバッファを ing するときに内部ロックを使用する複数のインスタンスをラップします。したがって、 の単純さから判断すると、ユーザー側のロックは冗長であると想定しても安全であり、返されるクラスは実際にはスレッド セーフです。WrappingBufferManagerSynchronizedPool<T>Take()WrappingBufferManager
BufferManager でスレッドの問題が発生しました。WCF でカスタム メッセージ エンコーダーを作成しましたが、私の観察によると、呼び出しごとにバッファー マネージャーが作成されるとは限りません。したがって、バイトが他のスレッドによって再利用/返されているため、データが破損しています。
だから、あなたの質問に答えるために... いいえ、そうではありません。同じインスタンスを再利用しているため、スレッドセーフであるとは限りません。