我目前正在使用G服务器在C中开发一个web应用程序,我希望使用G中包含的KV商店来存储生成的网页和显示页面次数的计数器。
KV存储是一个散列映射,您可以使用它来存储复杂的数据,比如结构。
这就是我用来存储HTML数据和一个整数的计数器:
typedef struct
{
char* HTML;
int nbDisplays;
} my_data;
web服务器使用多个线程,KV存储在线程之间共享。
为了更新字段nbDisplays,我使用了一个原子操作__sync_fetch_and_add (.)但是我不知道更新HTML字段的最佳方法是什么,HTML是一个指针。
是否更好:
我不习惯在多线程环境中编程,我害怕一些“奇怪”的行为。
发布于 2012-08-21 20:12:37
kv_add()
被记录为原子操作。您可以使用它来更新您的计数器,但是这比仅仅使用原子操作来增加nbDisplays
计数器而不接触HTMLIndict(页面的名称不改变)要慢。
但是G-万KV的功能并不能使它看起来像一个hash map
。您不能使用hash map
进行这些范围查询。
https://stackoverflow.com/questions/12006364
复制相似问题