示例#1
0
        public static void ReleaseObject <T>(T obj) where T : class
        {
            long        typePointer = ObjectPoolMgr.GetTypePointer <T>();
            IObjectPool objectPool;

            if (ObjectPoolMgr.m_pools.TryGetValue(typePointer, out objectPool))
            {
                objectPool.Recycle(obj);
            }
        }
示例#2
0
        public static void SetMinimumSize <T>(int minSize) where T : class
        {
            long typePointer = ObjectPoolMgr.GetTypePointer <T>();

            if (ObjectPoolMgr.m_pools.ContainsKey(typePointer))
            {
                ObjectPool <T> objectPool = (ObjectPool <T>)ObjectPoolMgr.m_pools[typePointer];
                objectPool.MinimumSize = minSize;
            }
        }
示例#3
0
        public static ObjectPoolInfo GetPoolInfo <T>() where T : class
        {
            long           typePointer = ObjectPoolMgr.GetTypePointer <T>();
            IObjectPool    objectPool;
            ObjectPoolInfo result;

            if (ObjectPoolMgr.m_pools.TryGetValue(typePointer, out objectPool))
            {
                result = ((ObjectPool <T>)objectPool).Info;
            }
            else
            {
                result = new ObjectPoolInfo(0, 0);
            }
            return(result);
        }
示例#4
0
        public static T ObtainObject <T>() where T : class
        {
            long        typePointer = ObjectPoolMgr.GetTypePointer <T>();
            IObjectPool objectPool;
            T           result;

            if (ObjectPoolMgr.m_pools.TryGetValue(typePointer, out objectPool))
            {
                result = ((ObjectPool <T>)objectPool).Obtain();
            }
            else
            {
                result = default(T);
            }
            return(result);
        }
示例#5
0
        public static bool RegisterType <T>(Func <T> func) where T : class
        {
            long typePointer = ObjectPoolMgr.GetTypePointer <T>();
            bool result;

            lock (typeof(ObjectPoolMgr))
            {
                if (!ObjectPoolMgr.m_pools.ContainsKey(typePointer))
                {
                    ObjectPoolMgr.m_pools.Add(typePointer, new ObjectPool <T>(func));
                    result = true;
                    return(result);
                }
            }
            result = false;
            return(result);
        }
示例#6
0
 public static bool ContainsType <T>()
 {
     return(ObjectPoolMgr.m_pools.ContainsKey(ObjectPoolMgr.GetTypePointer <T>()));
 }