我目前正在使用 G-Wan Web 服务器在 C 中开发一个 Web 应用程序,我想使用 G-Wan 附带的 KV Store 来存储生成的网页和页面显示次数的计数器.
KV 存储是一个哈希映射,可用于存储复杂数据,例如结构。
这就是我用来存储 HTML 数据和一个整数的计数器:
typedef struct
{
char* HTML;
int nbDisplays;
} my_data;
Web 服务器正在使用多个线程,并且 KV 存储在线程之间共享。
为了更新字段 nbDisplays 我正在使用原子操作 __sync_fetch_and_add (...) 但我不知道更新作为指针的字段 HTML 的最佳方法是什么。
这个会比较好吗:
- 使用存储在 KV 中的现有结构构建一个新结构,获取当前值并使用 G-WAN 提供的 add() 函数将其添加到 KV 存储(此函数用新结构替换旧结构)
- 或者直接更新存储在 KV 存储中的结构的值?
我不习惯在多线程环境中编程,我害怕一些“奇怪”的行为......