From 7db9159a7db5a2f4640e1f2dbb4d457860de05a7 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Thu, 21 Mar 2024 01:58:08 +0800 Subject: [PATCH] added DataStackPool<> --- inc/hgl/type/DataStackPool.h | 56 ++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 inc/hgl/type/DataStackPool.h diff --git a/inc/hgl/type/DataStackPool.h b/inc/hgl/type/DataStackPool.h new file mode 100644 index 0000000..460fed1 --- /dev/null +++ b/inc/hgl/type/DataStackPool.h @@ -0,0 +1,56 @@ +#pragma once + +#include +#include + +namespace hgl +{ + /** + * 数据堆栈池(一种简单的数据池结构,不支持动态调整大小) + */ + template class DataStackPool + { + protected: + + T *data_array; ///<数据区 + T *end; ///<结束指针 + SeriesInt series; ///<序号池 + + public: + + DataStackPool(const int max_count):series(max_count) + { + data_array=hgl_zero_new(max_count); + + end=data_array+max_count; + } + + ~DataStackPool() + { + delete[] data_array; + } + + T *Acquire() ///<请求一个数据 + { + int pos; + + if(!series.Acquire(&pos)) + return nullptr; + + return data_array+pos; + } + + bool Release(T *obj) ///<释放一个数据 + { + if(!obj) + return(false); + + if(obj=end) + return(false); + + const int pos=obj-data_array; + + return series.Release(pos); + } + };//template class DataStackPool +}//namespace