0

假设在 G-WAN 服务器线程中,我们在 KV 存储中查找了一个项目,并获得了一个指向“记录”结构的有效指针。(KV 存储附加到 G-WAN 的持久指针。)

record = (record_t*)kv_get(&records, "akey", sizeof("akey") - 1);

我假设我们可以安全地读取记录结构的内容,即使它在另一个服务器线程中被标记为删除,这要归功于无锁设计。

我的问题是实际删除何时发生?在请求最终返回之前,我们是否保证可以访问“记录”?

4

1 回答 1

0

标记为删除的 KV 记录一直有效,直到所有HTTP requests获取它的KV 记录都终止。

在您的情况下,这意味着您必须将此 VK 记录的副本附加到您的持久指针,当此数据在使用所述 KV 记录的 HTTP 请求的生命周期之外使用时。

如果您确定在 HTTP 请求完成后您的持久指针不保留引用,那么您不需要制作您使用的 KV 记录的副本。

于 2012-12-26T13:34:42.627 回答