我目前正在使用G-Wan网络服务器在C中开发一个网络应用程序,我想使用G-Wan附带的KV商店来存储生成的网页和计数器页面的次数已经显示。
KV商店是一个哈希映射,可用于存储复杂的数据,如结构。
这就是我用来存储HTML数据和整数的计数器:
typedef struct
{
char* HTML;
int nbDisplays;
} my_data;
Web服务器正在使用多个线程,并且KV存储在线程之间共享。
更新字段nbDisplays我正在使用原子操作__sync_fetch_and_add(...) 但我不知道更新作为指针的字段HTML的最佳方法是什么。
是否更好:
我不习惯在多线程环境中编程,我害怕一些“奇怪的”行为......
答案 0 :(得分:1)
kv_add()
被记录为原子操作。您可以使用它来更新计数器,但这比仅使用原子操作增加nbDisplays
计数器而不触及HTML指针(页面名称不会更改)要慢。
但G-Wan KV商店的功能并不会使它看起来像hash map
。您无法使用hash map
进行范围查询。