CMExamples/datatype/StackPoolTest.cpp
2024-03-24 00:55:23 +08:00

63 lines
1.2 KiB
C++

#include<hgl/type/DataStackPool.h>
#include"UserInfo.h" //测试用结构体
#include<iostream>
#include<random>
using namespace hgl;
using namespace std;
template<typename T> void out_series_pool(const SeriesPool<T> *sp)
{
const int free_count=sp->GetFreeCount();
cout<<"Series Pool("<<free_count<<"): ";
const T *p=sp->GetRawData();
for(int i=0;i<free_count;i++)
{
if(i>0)cout<<",";
cout<<uint(*p++);
}
cout<<endl;
}
#define USE_RANDOM_SERIES_POOL true //使用随机序号池
int os_main(int,os_char **)
{
DataStackPool<UserInfo> dsp_userinfo(user_info_array_count); //用户信息数据池
#ifdef USE_RANDOM_SERIES_POOL
{
auto *series=dsp_userinfo.GetSeries();
series->InitRandomSeries();
out_series_pool(series);
}
#endif//USE_RANDOM_SERIES_POOL
{
UserInfo *tp;
for(const UserInfo &sp:user_info_array)
{
tp=dsp_userinfo.Acquire();
if(!tp)
{
cout<<"Acquire UserInfo Error!"<<endl;
break;
}
*tp=sp;
}
out_userinfo(dsp_userinfo.GetRawData(),user_info_array_count);
}
return 0;
}