hiredis一问,异步接口Async是否必须一个事件库?

难易 发布于 2012/07/26 10:35
阅读 3K+
收藏 0

我的目的是异步的往别的机器的redis服务器写日志。

同步接口速度比较慢。所以想用异步的。

但是异步的似乎必须绑定到一个事件库上?类似libev,或者libevent,或者ae.c

也就是说我必须首先单独起一个线程,运行事件库的主循环,

1.然后在别的线程调用redisAsyncCommand来发送日志?不知道我的理解是否正确。

2.这么干有没有线程同步的问题?

3.有没有hiredis异步多线程使用的例子?

加载中
0
难易
难易

oK,看了一天代码,痛苦的过来回答问题

1.必须绑定到事件库,redisAsyncCommand把命令写入缓存,然后注册一个写的函数到事件库,等待事件库发现fd可写之后调用这个函数来做真的写。

2.线程是否同步不清楚。目前自己写了一个2线程的,一个线程做事件主循环,一个发送Command,但是内存有问题core出来了。

3.寻找中。

jungleliu0923
jungleliu0923
这个问题我也越到
jason_wzhy
jason_wzhy
LZ出现的core是因为多个线程(ev_loop或者其他loop触发的redisAsyncHandleWrite 和 redisAsyncCommand)都会对c-obuf进行操作。
0
p
pri猫
我最近也要使用hiredis,不过我也没有使用libev之类的事件库。我打算单开一个线程使用同步api来做,楼主有没有什么好建议?
难易
难易
同步的没什么问题,直接用就可以了
返回顶部
顶部