CombatListPool.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System.Threading;
  2. using Fort23.Core;
  3. using Fort23.UTool;
  4. using Utility;
  5. namespace CombatLibrary.CombatLibrary.CombatCore
  6. {
  7. public class CombatListPool<T>: Singleton<CombatListPool<T>>
  8. {
  9. private readonly CombatPool<BetterList<T>> s_ListPool = new CombatPool<BetterList<T>>();
  10. public CombatListPool()
  11. {
  12. #if !COMBAT_SERVER
  13. // EventManager.Instance.AddEventListener(CustomEventType.ClearList, ClearList);
  14. #endif
  15. }
  16. private void ClearList(IEventData iEventData)
  17. {
  18. #if !COMBAT_SERVER
  19. s_ListPool.Clear();
  20. #endif
  21. }
  22. public BetterList<T> Get()
  23. {
  24. BetterList<T> betterList = s_ListPool.Get();
  25. betterList.isNotPool = false;
  26. if (betterList.tranId != 0)
  27. {
  28. LogTool.Error("线程冲突");
  29. }
  30. betterList.tranId = Thread.CurrentThread.ManagedThreadId;
  31. return betterList;
  32. }
  33. public void Recycle(BetterList<T> toRelease)
  34. {
  35. toRelease.tranId = 0;
  36. toRelease.Clear();
  37. s_ListPool.Recycle(toRelease);
  38. }
  39. }
  40. }