首页 > 代码库 > 写一个高效的缓存组件(对象池)
写一个高效的缓存组件(对象池)
我们在写高效服务时,许多需要缓存,一般缓存组件都需要加锁,我最近想了一个方法,感觉还不错,分享一下。直接上代码:
public abstract class SimpleObjPool<T> { int _locker = 0; int _cnt = 0; T[] _ts; public SimpleObjPool(int MaxSize) { _ts = new T[MaxSize]; } protected abstract T NewObj(); public T GetObj() { int a = Interlocked.Exchange(ref _locker, 1); if (a == 0) { if (_cnt > 0) { _cnt--; T t = _ts[_cnt]; Interlocked.Exchange(ref _locker, 0); return t; } Interlocked.Exchange(ref _locker, 0); } return NewObj(); } public virtual bool FreeObj(T t) { int a = Interlocked.Exchange(ref _locker, 1); if (a == 0) { if (_cnt < _ts.Length) { _ts[_cnt] = t; _cnt++; Interlocked.Exchange(ref _locker, 0); return true; } Interlocked.Exchange(ref _locker, 0); } return false; } }
写一个高效的缓存组件(对象池)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。