Added lock object for free buffer stack in PooledBufferManager.cs

This commit is contained in:
MaxXor 2015-06-10 16:31:14 +02:00
parent fd221f2e42
commit ca2f4c550b
1 changed files with 5 additions and 4 deletions

View File

@ -12,6 +12,7 @@ public class PooledBufferManager
private readonly int _bufferLength;
private int _bufferCount;
private Stack<byte[]> _buffers;
private object _buffersLock = new object();
#region events
/// <summary>
@ -128,7 +129,7 @@ public byte[] GetBuffer()
{
if (_buffers.Count > 0)
{
lock (_buffers)
lock (_buffersLock)
{
if (_buffers.Count > 0)
{
@ -175,7 +176,7 @@ public bool ReturnBuffer(byte[] buffer)
}
}
lock (_buffers)
lock (_buffersLock)
{
if (!_buffers.Contains(buffer))
_buffers.Push(buffer);
@ -203,7 +204,7 @@ public void IncreaseBufferCount(int buffersToAdd)
newBuffers.Add(new byte[_bufferLength]);
}
lock (_buffers)
lock (_buffersLock)
{
_bufferCount += buffersToAdd;
for (int i = 0; i < buffersToAdd; i++)
@ -231,7 +232,7 @@ public int DecreaseBufferCount(int buffersToRemove)
int numRemoved = 0;
lock (_buffers)
lock (_buffersLock)
{
for (int i = 0; i < buffersToRemove && _buffers.Count > 0; i++)
{