public static void RecycleBuffer(byte[] buffer) { if (buffer == null || buffer.Length == 0) { return; } if (bufferCount > BUFFER_POOL_SIZE) { return; } Queue <byte[]> bufferCache = null; lock (bufferPool) { if (!bufferPool.TryGetValue(buffer.Length, out bufferCache)) { bufferCache = new Queue <byte[]>(); bufferPool.Add(buffer.Length, bufferCache); } for (int i = 0; i < buffer.Length; i++) { buffer[i] = (byte)0; } bufferCount++; bufferCache.Enqueue(buffer); #if UNITY_EDITOR bufferDetecter.DecreseInstance(); bufferDetecter.SetPooledObjectCount(bufferCount); #endif } }
public static void RecycleStream(StreamBuffer stream) { if (stream == null || stream.size == 0) { return; } Queue <StreamBuffer> streamCache = null; lock (streamPool) { if (!streamPool.TryGetValue(stream.size, out streamCache)) { streamCache = new Queue <StreamBuffer>(); streamPool.Add(stream.size, streamCache); } stream.ClearBuffer(); stream.ResetStream(); streamCount++; streamCache.Enqueue(stream); #if UNITY_EDITOR streamDetecter.DecreseInstance(); streamDetecter.SetPooledObjectCount(streamCount); #endif } }
public void Release() { lock (pool) { if (pool.Count < POOL_SIZE_LIMIT) { pool.Enqueue(this); } #if UNITY_EDITOR detecter.DecreseInstance(); detecter.SetPooledObjectCount(pool.Count); #endif } }