Пример #1
0
 public ObjectPoolManager()
 {
     mUdpFixedSizePackagePool = new SafeObjectPool <NetUdpFixedSizePackage> ();
     mCombinePackagePool      = new SafeObjectPool <NetCombinePackage> ();
     mClientPeerPool          = new SafeObjectPool <ClientPeer> ();
     mNetEndPointPackagePool  = new SafeObjectPool <NetEndPointPackage> ();
 }
Пример #2
0
        public UdpCheckPool(ClientPeer mUdpPeer)
        {
            mCheckPackagePool        = new SafeObjectPool <CheckPackageInfo> ();
            mWaitCheckSendDic        = new ConcurrentDictionary <ushort, CheckPackageInfo> ();
            mWaitCheckReceiveDic     = new ConcurrentDictionary <ushort, CheckPackageInfo> ();
            mReceiveSurePackageQueue = new ConcurrentQueue <NetUdpFixedSizePackage> ();

            nCurrentWaitReceiveOrderId = ServerConfig.nUdpMinOrderId;
            mCombinePackageQueue       = new ConcurrentQueue <NetCombinePackage> ();
            mReceiveLossPackageDic     = new ConcurrentDictionary <ushort, NetUdpFixedSizePackage> ();

            nCurrentWaitReceiveOrderId = ServerConfig.nUdpMinOrderId;
            nCurrentWaitSendOrderId    = ServerConfig.nUdpMinOrderId;

            this.mUdpPeer = mUdpPeer;
        }
Пример #3
0
        public void SafeObjectPool_Test()
        {
            var msgPool = new SafeObjectPool <Msg>();

            msgPool.Init(100, 50); // max count:100 init count: 50
            Assert.AreEqual(msgPool.CurCount, 50);
            var fishOne = msgPool.Allocate();

            Assert.AreEqual(msgPool.CurCount, 49);
            msgPool.Recycle(fishOne);
            Assert.AreEqual(msgPool.CurCount, 50);
            for (var i = 0; i < 10; i++)
            {
                msgPool.Allocate();
            }
            Assert.AreEqual(msgPool.CurCount, 40);
        }
 public ObjectPoolManager()
 {
     mUdpFixedSizePackagePool = new SafeObjectPool <NetUdpFixedSizePackage> ();
     mCombinePackagePool      = new SafeObjectPool <NetCombinePackage> ();
 }
Пример #5
0
        private void Start()
        {
            #region 简易对象池示例
            SimpleObjectPool <EFrameSimpleMsg> simpleMsgPool = new SimpleObjectPool <EFrameSimpleMsg>(
                () => new EFrameSimpleMsg(),
                simpleMsg => { simpleMsg.Reset(); },
                10
                );

            Debug.Log(string.Format("simpleMsgPool.CurCount: {0}", simpleMsgPool.CurCount));

            var t_simpleMsg = simpleMsgPool.Allocate();

            Debug.Log(string.Format("simpleMsgPool.CurCount: {0}", simpleMsgPool.CurCount));

            var res = simpleMsgPool.Recycle(t_simpleMsg);

            Debug.Log(string.Format("simpleMsgPool.CurCount: {0}", simpleMsgPool.CurCount));

            EFrameSimpleMsg[] msgs = new EFrameSimpleMsg[5];

            for (int i = 0; i < msgs.Length; i++)
            {
                msgs[i] = simpleMsgPool.Allocate();
            }

            Debug.Log(string.Format("simpleMsgPool.CurCount: {0}", simpleMsgPool.CurCount));

            for (int i = 0; i < msgs.Length; i++)
            {
                simpleMsgPool.Recycle(msgs[i]);
            }

            Debug.Log(string.Format("simpleMsgPool.CurCount: {0}", simpleMsgPool.CurCount));
            #endregion

            #region 安全对象池示例
            SafeObjectPool <EFrameSafeMsg> safeMsgPool = SafeObjectPool <EFrameSafeMsg> .Instance;

            safeMsgPool.Init(100, 50);

            Debug.Log(string.Format("safeMsgPool.CurCount: {0}", safeMsgPool.CurCount));

            var msg = EFrameSafeMsg.Allocate();

            Debug.Log(string.Format("safeMsgPool.CurCount: {0}", safeMsgPool.CurCount));

            msg.Recycle2Cache();

            Debug.Log(string.Format("safeMsgPool.CurCount: {0}", safeMsgPool.CurCount));

            EFrameSafeMsg[] safeMsgs = new EFrameSafeMsg[40];

            for (int i = 0; i < safeMsgs.Length; i++)
            {
                safeMsgs[i] = EFrameSafeMsg.Allocate();
            }

            Debug.Log(string.Format("safeMsgPool.CurCount: {0}", safeMsgPool.CurCount));

            for (int i = 0; i < safeMsgs.Length; i++)
            {
                safeMsgs[i].Recycle2Cache();
            }

            Debug.Log(string.Format("safeMsgPool.CurCount: {0}", safeMsgPool.CurCount));

            #endregion
        }