当前位置: 首页 > news >正文

优质网站建设方案深圳做生鲜食材的网站叫什么

优质网站建设方案,深圳做生鲜食材的网站叫什么,做网站需要的技术,吉林电商网站建设报价Unity C# 引用池 ReferencePool 1.目的 对于多次创建的数据使用new 关键字是十分消耗性能的#xff0c;使用完成后由GC去自动释放#xff0c;当一个类型的数据频繁创建可以使用引用池进行管理。 2.实现 项目目录 IReference 接口 要放入引用池的数据只需要继承这个接口…Unity C# 引用池 ReferencePool 1.目的 对于多次创建的数据使用new 关键字是十分消耗性能的使用完成后由GC去自动释放当一个类型的数据频繁创建可以使用引用池进行管理。 2.实现 项目目录 IReference 接口 要放入引用池的数据只需要继承这个接口即可 namespace ReferencePool {public interface IReference{void Clear();} }ReferenceCollection 引用集合 一个类型对应一个引用集合每次请求从引用集合的队列中获取 namespace ReferencePool {public class ReferenceCollection{private readonly QueueIReference m_References new QueueIReference();private Type m_ReferenceType;private int m_CurrUsingRefCount;//当前引用的数量private int m_AcquireRefCount;//请求引用的总数量private int m_ReleaseRefCount;//释放引用的总数量private int m_AddRefCount;//添加引用的总数量private int m_RemoveRefCount;//移除引用的总数量public int CurrUsingRefCount m_CurrUsingRefCount;public int AcquireRefCount m_AcquireRefCount;public int ReleaseRefCount m_ReleaseRefCount;public int AddRefCount m_AddRefCount;public int RemoveRefCount m_RemoveRefCount;public ReferenceCollection(Type refType){m_ReferenceType refType;m_CurrUsingRefCount 0;m_AcquireRefCount 0;m_ReleaseRefCount 0;m_AddRefCount 0;m_RemoveRefCount 0;}public T AcquireT() where T : class, IReference, new(){if (typeof(T) ! m_ReferenceType){throw new Exception(类型不相同无法请求!!!);}m_CurrUsingRefCount;m_AcquireRefCount;lock (m_References){if (m_References.Count 0){return (T)m_References.Dequeue();}}m_AddRefCount;return new T();}public void Release(IReference reference){reference.Clear();lock (m_References){if (m_References.Contains(reference)){throw new Exception(引用已经被释放请勿重新释放!!!);}m_References.Enqueue(reference);}m_CurrUsingRefCount--;m_ReleaseRefCount;}public void AddT(int count) where T : class, IReference, new(){if (typeof(T) ! m_ReferenceType){throw new Exception(类型不相同无法添加!!!);}lock (m_References){m_AddRefCount count;while (count-- 0){m_References.Enqueue(new T());}}}public void Remove(int count){lock (m_References){if(count m_References.Count){count m_References.Count;}m_RemoveRefCount count;while (count-- 0){m_References.Dequeue();}}}public void RemoveAll(){lock (m_References){m_RemoveRefCount m_References.Count;m_References.Clear();}}} }ReferencePool 真正的引用池 对引用集合进行统一管理 public static class ReferencePool{private static readonly DictionaryType,ReferenceCollection m_ReferenceCollections new DictionaryType,ReferenceCollection();public static int Count m_ReferenceCollections.Count;//获取引用池的数量public static void ClearAll(){lock (m_ReferenceCollections){foreach (var reference in m_ReferenceCollections.Values){reference.RemoveAll();}m_ReferenceCollections.Clear();}}public static T AcquireT() where T : class, IReference, new(){return GetReferenceCollection(typeof(T)).AcquireT();}public static void Release(IReference reference){GetReferenceCollection(reference.GetType()).Release(reference);}public static void AddT(int count) where T : class, IReference, new(){GetReferenceCollection(typeof(T)).AddT(count);}public static void RemoveT(int count) where T : class, IReference, new(){GetReferenceCollection(typeof(T)).Remove(count);}public static void RemoveAllT() where T : class, IReference, new(){GetReferenceCollection(typeof(T)).RemoveAll();}private static ReferenceCollection GetReferenceCollection(Type type){if (type null){throw new Exception(Type 类型 为空!!!);}ReferenceCollection referenceCollection null;lock (m_ReferenceCollections){if(!m_ReferenceCollections.TryGetValue(type,out referenceCollection)){referenceCollection new ReferenceCollection(type);m_ReferenceCollections.Add(type, referenceCollection);}}return referenceCollection;}public static int GetCurrUsingRefCountT() where T : class, IReference, new(){return GetReferenceCollection(typeof(T)).CurrUsingRefCount;}public static int GetAcquireRefCountT() where T : class, IReference, new(){return GetReferenceCollection(typeof(T)).AcquireRefCount;}public static int GetReleaseRefCountT() where T : class, IReference, new(){return GetReferenceCollection(typeof(T)).ReleaseRefCount;}public static int GetAddRefCountT() where T : class, IReference, new(){return GetReferenceCollection(typeof(T)).AddRefCount;}public static int GetRemoveRefCountT() where T : class, IReference, new(){return GetReferenceCollection(typeof(T)).RemoveRefCount;}}3.测试 namespace ReferencePool {public class Program{static void Main(string[] args){TeacherData teacherData1 ReferencePool.AcquireTeacherData();teacherData1.Name zzs;teacherData1.Age 20;ReferencePool.Release(teacherData1);TeacherData teacherData2 ReferencePool.AcquireTeacherData();teacherData1.Name xxx;teacherData1.Age 18;Console.WriteLine(ReferencePool.GetCurrUsingRefCountTeacherData());Console.WriteLine(ReferencePool.GetAcquireRefCountTeacherData());Console.WriteLine(ReferencePool.GetReleaseRefCountTeacherData());Console.WriteLine(ReferencePool.GetAddRefCountTeacherData());Console.WriteLine(ReferencePool.GetRemoveRefCountTeacherData());Console.ReadKey();}}public class TeacherData : IReference{public string Name;public int Age;public void Clear(){Name string.Empty;Age 0;}} }4.总结 重复使用的对象只创建有限次避免来回实例化对象的开销
http://www.zqtcl.cn/news/789865/

相关文章:

  • 天津谁做网站莱芜人才网招聘网
  • 学做网站的书籍自己做网站 最好的软件
  • 手机网站专题电商入门视频教程免费
  • aspx网站模板制作网页常用的软件有哪些
  • 网站主关键词湖南网站定制
  • 长沙seo网站排名优化公司进入秦皇岛最新规定
  • 企业网站优化平台宝山北京网站建设
  • 给人做代工的网站加盟代理网
  • 网站建设用dw电脑谷歌浏览器打开是2345网址导航
  • 做外贸一般总浏览的网站太原的网站建设公司哪家好
  • 台州建网站公司wordpress 用微信登陆
  • 广州白云网站建设家在深圳业主
  • 呼和浩特网站建设哪家最便宜?携程旅行网网站策划书
  • 网站建设及相关流程北京网站备案域名
  • 汉字叔叔花了多少钱做网站微商城科技
  • 网站代理被抓html网站开发实战
  • 如何建立免费的网站网站copyright写法
  • 官方网站下载12306合肥有没有做网站的单位
  • 甘露园网站建设网站框架图片
  • 做网站怎样赚卖流量石家庄网站建设联系电话
  • wordpress 图片网站本地免费发布信息网站
  • 建设网站和别人公司重名新乡建设招标投标网站
  • 四川省建设厅网站证想开个网站怎样开公司
  • 做机械一般做那个外贸网站电商软件开发费用
  • 网站外链坏处龙岗网站设计信息
  • 郑州网站建设乙汉狮网络搜索优化网络推广
  • Dw做html网站百度推广竞价排名
  • 北京市电力建设公司网站万云网络网站
  • 校园网站开发方案做网站现在用什么语言
  • 网站建设学什么书中联建设集团股份有限公司网站