Intern% BufferManager.CreateBufferManager
gibt eine Instanz von WrappingBufferManager
zurück, die keine Form der Nebenläufigkeitssteuerung verwendet, sondern mehrere Instanzen von SynchronizedPool<T>
umschließt, die interne Sperren verwenden, wenn Take()
einen neuen Puffer enthält. Wenn man also die Einfachheit von WrappingBufferManager
bedenkt, kann man davon ausgehen, dass jede Sperrung überflüssig ist und die zurückgegebene Klasse tatsächlich Thread-sicher ist.
Ich habe Thread-Probleme mit BufferManager festgestellt. Ich habe einen benutzerdefinierten Nachrichtenencoder in WCF erstellt und basierend auf meinen Beobachtungen ist es nicht immer garantiert, dass der Puffermanager für jeden Aufruf erstellt wird. Daher werden Bytes von anderen Threads wiederverwendet / zurückgegeben, wodurch meine Daten beschädigt werden.
Also, um Ihre Frage zu beantworten ... Nein, sie sind NICHT . Da Sie die gleiche Instanz erneut verwenden, sind sie nicht garantiert threadsicher .
Tags und Links c# thread-safety buffer-manager