我目前正在使用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/

10-13 00:06