我有一个程序(在C++中),用户在其中扫描条形码,以查找该条形码引用的对象上的信息(从sqlanywhere 12 DB)。
虽然每天扫描数千个条形码,但一些附加信息从未改变(即ID引用公共数据集,如状态)。
我可以处理这些罕见的变化(更糟糕的情况是,我可以在大厅里大喊,重新启动程序(这是内部的))。
所以问题是:
我想创建一个简单的类,包含一些数据结构和静态列表,在列表中缓存,然后从列表中抓取。
然后我想也许这不是很有效???
struct my_cache_data
{
INDEX id;
CString name;
};
static std::list<my_cache_data> s_my_cached_list;
static CCrtiticalSection s_crit;
void Get_Data(my_cache_data &data, INDEX id)
{
static std::list<my_cache_data>::iterator it;
for(it = s_my_cached_list; it != s_my_cached_list; ++it)
{
if((*it).id == id)
{
data = *it;
return;
}
}
Cache_data(data, id);
}
void Cache_data(my_cache_data &data, INDEX id)
{
... Do DB stuff
s_my_cached_list.push_back(data);
}