我目前正在使用G-Wan web服务器在C中开发一个web应用程序,我想使用G-Wan中包含的KV Store来存储生成的web页面和显示页面次数的计数器。
Kvstore是一个散列映射,可以用来存储复杂的数据,比如结构。
这是我用来存储HTML数据和一个整数的计数器:
typedef struct
{
char* HTML;
int nbDisplays;
} my_data;
web服务器使用多个线程,并且在线程之间共享KV存储。
为了更新字段nbDisplays,我正在使用原子操作同步获取和添加(…)
但是我不知道什么是更新HTML字段的最好方法,它是一个指针。
是不是更好:
利用现有存储在KV中的一个新的结构来获得当前值,并用G-WAN提供的Ad()函数将其添加到KV存储中(这个函数用新的结构替换旧的结构)
或者直接更新储存在KV仓库中的结构值?
我不习惯在多线程环境中编程,我害怕一些“奇怪”的行为。。。
最佳答案
kv_add()
被记录为原子操作。您可以使用它来更新计数器,但这比仅使用原子操作在不接触HTML指针的情况下增加nbDisplays
计数器要慢(页面名称不会更改)。
但是G-Wan千伏商店的特性并没有让它看起来像一个hash map
。您不能使用hash map
执行这些范围查询。
关于c - 使用KV商店管理G-WAN中的缓存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12006364/