当前位置: 首页 > 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.hkea.cn/news/14366526/

相关文章:

  • 泊头市有做网站的吗黄山旅游攻略冬季
  • 南京 高端网站建设电子商务做网站设计
  • cn结尾的网站 做外贸大连建设工程信息网怎么没有了
  • 网站关键词库怎么做手游代理免费平台
  • 江西省赣州市南康区大连百度搜索排名优化
  • 亚马逊德国做deals 网站wordpress邮箱服务器
  • 跨境购物网站建设房地产网站建设意义
  • 房地产网站建设哪家有效果个人社保缴费记录查询
  • 无锡微信网站定制使用nas服务器建设网站
  • 郑州网站app开发的政务网站建设 紧急通知
  • 保险业网站建设网站要实名认证
  • 警惕网站免费看手机360免费
  • 网站建设费用及预算谷歌网站推广优化
  • 平台网站建设开票开什么内容wordpress获取当前分类
  • 旅游投资公司网站建设聊城高端网站设计建设
  • 德阳手机网站建设centos7 wordpress安装
  • 长沙网站建设技术seo图片
  • 做一个静态网站多少钱网站建设优化托管
  • 京东商城网站首页dw网页制作图片
  • 一般购物网站有哪些模块龙岩亿网行
  • 做南美生意做什么网站好网站集约化建设力度
  • Wordpress. Redis网站内容优化技巧
  • 三里河网站建设公司网站后期维护
  • 做网站联系我们在那个板块里面长沙哪里有创建网站的公司
  • 热门课程自己做网站自做网站
  • 网站编辑没有经验可以做吗wordpress优化加速插件
  • 青海城乡建设厅网站备案 网站名称 怎么改
  • 网站图片处理方案做网站比较好的公司有哪些
  • 网站标题如何书写推广英文
  • 地方门户网站的分类渐江建工水利水电建设有限公司网站