我试图使用kv_t存储一些数据,但没有成功。我还尝试了forum.c & kv.c的例子。当kv.c崩溃时,当尝试创建第二个Forum线程时,forum.c挂起。
当我有一个项目添加到kv,kv_do将成功。添加第二项后,尝试调用kv_do将导致无限循环,数据似乎也无效。
#include "stdio.h"
int list_threads(kv_item *item, xbuf_t *reply)
{
Thread *thread = (Thread*)item->val;
xbuf_t thread_li;
xbuf_init(&thread_li);
//using sprintf-like formatting
xbuf_xcat(&thread_li,
"<li>"
"<a href='/?forum_simple/act=t/id=%llu'>%s</a> (%lu)"
"</li>",
thread->id, thread->title.ptr, thread->posts.nbr_items
);
char *pos = (char*)xbuf_findstr(reply, "<!--tpl-->");
if (pos) xbuf_insert(reply, pos, thread_li.len, thread_li.ptr);
printf("-----------listing threads------\n");
xbuf_free(&thread_li);
return 1;
}上面的代码来自forum.c。在创建第一个论坛线程之后,尝试创建第二个论坛线程将挂起,因为如果无限地调用list_threads函数。-列出的线程
发布于 2016-09-18 05:41:42
另一位用户最近报告了(请参阅“最新”G问题) kv_do崩溃,它似乎与原子原语实现有关,而不是与kv代码有关。
一旦问题得到解决,就会提出解决办法。
https://stackoverflow.com/questions/39443479
复制相似问题