【发布时间】:2017-08-11 15:22:17
【问题描述】:
我有一个程序(在 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);
}
【问题讨论】:
标签: c++ caching static sqlanywhere