public ObjectPoolManager() { mUdpFixedSizePackagePool = new SafeObjectPool <NetUdpFixedSizePackage> (); mCombinePackagePool = new SafeObjectPool <NetCombinePackage> (); mClientPeerPool = new SafeObjectPool <ClientPeer> (); mNetEndPointPackagePool = new SafeObjectPool <NetEndPointPackage> (); }
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; }
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> (); }
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 }