我通過BufferManager.CreateBufferManager
的靜態成員創建緩衝區管理器。這個新創建的BufferManager
被多個線程使用。是System.ServiceModel.Channels.BufferManager是否線程安全?
我應該使用lock
與TakeBuffer()
和ReturnBuffer()
或者它是線程安全的設計嗎?
我通過BufferManager.CreateBufferManager
的靜態成員創建緩衝區管理器。這個新創建的BufferManager
被多個線程使用。是System.ServiceModel.Channels.BufferManager是否線程安全?
我應該使用lock
與TakeBuffer()
和ReturnBuffer()
或者它是線程安全的設計嗎?
內部BufferManager.CreateBufferManager
返回WrappingBufferManager
一個實例,其採用無形式併發控制的,但包裹其採用內部鎖定時Take()
荷蘭國際集團的新緩衝區的SynchronizedPool<T>
多個實例。因此,根據WrappingBufferManager
的簡單性判斷,假設您的部分上的任何鎖定都是多餘的,並且返回的類實際上是線程安全的是安全的。
我遇到了BufferManager的線程問題。我在WCF中創建了一個自定義消息編碼器,根據我的觀察,並不總能保證爲每個調用創建緩衝區管理器。因此,字節被其他線程重複使用/返回,從而破壞了我的數據。
所以,要回答你的問題...不,他們是不是。由於您正在重複使用相同的實例,因此不保證thread-safe。