using System.Collections.Generic; namespace Zenject { public class ArrayPool : StaticMemoryPoolBaseBase { readonly int _length; public ArrayPool(int length) : base(OnDespawned) { _length = length; } static void OnDespawned(T[] arr) { for (int i = 0; i < arr.Length; i++) { arr[i] = default(T); } } public T[] Spawn() { #if ZEN_MULTITHREADING lock (_locker) #endif { return SpawnInternal(); } } protected override T[] Alloc() { return new T[_length]; } static readonly Dictionary> _pools = new Dictionary>(); public static ArrayPool GetPool(int length) { ArrayPool pool; if (!_pools.TryGetValue(length, out pool)) { pool = new ArrayPool(length); _pools.Add(length, pool); } return pool; } } }